![]() |
Delphi-Version: 5
Zeitumwandlung
hallo zusammen,
ich habe folgendes:
Delphi-Quellcode:
wobei in zeit 2.0000000029999998 steht
arbeitszeit:= FormatDateTime('dd:hh:nn', zeit) ;
nach meinem Verständnis sollten das doch etwas mehr als 2 Tage sein, oder? Warum bekomme ich dann in arbeitszeit : '01:00:00' Ich danke euch |
AW: Zeitumwandlung
Weil das der 2. Tag nach dem Start der Zeitrechnung des TDateTime ist?
Und das war halt der 01.01.1900 und 0,26 Millisekunden nach Mitternacht :roll: 0 = 30.12.1899 |
AW: Zeitumwandlung
Weil das "dd" für Tage steht.
|
AW: Zeitumwandlung
ok, das leuchtet mir ein,
wie bekomme ich sonst die Stunden; Minuten in ein lesbares Format? |
AW: Zeitumwandlung
Tage mit Trunc + IntToStr/Format und der Rest bleibt so.
Oder mit Magicwerten rechnen und +1. :stupid: (bei minimal 1 und maximal 31 Tagen) |
AW: Zeitumwandlung
Rechne Dir doch einfach aus, wieviele Stunden bzw. Minuten 2.0000000029999998 Tage sind.
|
AW: Zeitumwandlung
Zitat:
Die Funktion zeigt als Ausgabe einen Datumswert an und keine Zeitspanne. Dies wäre Dir aufgefallen, wenn Du noch yyyy und mm usw. hinzugefügt hättest, Also so:
Delphi-Quellcode:
Dann wäre als String
arbeitszeit:= FormatDateTime('yyyy mm dd hh:nn:ss z', zeit) ;
1900 01 01 00:00:00 0 herausgekommen. Und bei diesem Wert wärst Du doch nie auf die Idee gekommen, das da jemand schon 1900 Jahre, 1 Monat und 1 Tag gearbeitet hätte. |
AW: Zeitumwandlung
Zitat:
Delphi-Quellcode:
oder
var
AYear, AMonth, ADay, AHour, AMinute, ASecond, AMilliSecond: Word; d, t: Double; dt: TDateTime; begin dt := 2.0000000029999998; d := Trunc(dt); t := Trunc(Frac(dt) * 24 * 60 * 60 * 1000); AHour := Trunc(t / 60 / 60 / 1000); t := t - Trunc(AHour * 60 * 60 * 1000); AMinute := Trunc(t / 60 / 1000); t := t - Trunc(AMinute * 60 * 1000); ASecond := Trunc(t / 1000); t := t - Trunc(ASecond * 1000); AMilliSecond := Trunc(t); AHour := AHour + Trunc(d * 24); //Tage in Stunden umrechen und zu den Stunden dazugeben ShowMessageFmt('Stunden: %d; Minuten: %d; Sekunden: %d: Millisekunden: %d', [AHour, AMinute, ASecond, AMilliSecond]); end;
Delphi-Quellcode:
var
AYear, AMonth, ADay, AHour, AMinute, ASecond, AMilliSecond: Word; dt: TDateTime; begin dt := 2.0000000029999998; DecodeTime(dt, AHour, AMinute, ASecond, AMilliSecond); AHour := AHour + Trunc(dt * 24); //Tage in Stunden umrechen und zu den Stunden dazugeben ShowMessageFmt('Stunden: %d; Minuten: %d; Sekunden: %d: Millisekunden: %d', [AHour, AMinute, ASecond, AMilliSecond]); end; |
AW: Zeitumwandlung
War Da nicht was?
Zitat:
![]() Gruß K-H |
AW: Zeitumwandlung
ich danke euch, ihr seid einfach Spitze
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:14 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz