Datum und Zeit
Zeit- und Datumsformat festlegen
Mit folgenden Anweisungen stellt man
sicher, dass das anwendungsinterne Zeit- und Datumsformat immer
dem des "Deutschsprachigen Raums" entspricht, gleich welche
regionalen Formaten in dem ausführenden Windows gesetzt sind.
Auch eigene Kreationen sind möglich.
|
DateSeparator :=
'.';
TimeSeparator := ':';
ShortDateFormat := 'dd.mm.yyyy';
// z.B. 01.01.2000
ShortDateFormat := 'dd.mmm.yyyy';
// z.B. 01.Jan.2000; mmmm Januar; ddd Mo; dddd Montag...
LongTimeFormat := 'hh:nn:ss'; |
dd
= Tag, mm = Monat, yyyy = Jahr
hh = Stunden, nn = Minuten, ss = Sekunden
Aktuelles Datum und/oder Zeit formatiert
(
var d: TDateTime; )
|
Showmessage(FormatDateTime('yyyy.mm.dd',
Now)); // Jahr.Monat.Tag
Showmessage(FormatDateTime('yyyy-mm-dd',
Now)); // Jahr-Monat-Tag
Showmessage(FormatDateTime('yyyy.mm.dd_hh:nn:ss',
Now)); // Jahr.Monat.Tag
Stunde:Minute:Sekunde
Showmessage(FormatDateTime('hh:nn:ss,ms',
Now)); //
Stunde:Minute:Sekunde,Millisekunde |
Von Zeit nach String und zurück
Syntax von Zeit und Datum (Datumsformat
deutschsprachiger Raum):
TDate -> dd.mm.yyyy
TTime -> hh:mm:ss
TDateTime -> dd.mm.yyyy hh:mm:ss
|
Edit1.Text := TimeToStr(TTime);
Edit1.Text := DateToStr(TDate);
Edit1.Text := DateTimeToStr(TDateTime);
TTime := StrToTime('12:00:00');
TDate := StrToDate('01.01.2000');
TDateTime := StrToDateTime('01.01.2000 12:00:00') |
Beispiel: Zeit und Datum ermitteln
|
Edit1.Text
:= TimeToStr(TDateTime(Time)); // gibt
die aktuelle Uhrzeit zurück
Edit1.Text := DateToStr(TDateTime(Now));
// gibt das aktuelle Datum zurück |
Sekunden, Minuten, Stunden und Tage zu TDateTime hinzuzählen und
abziehen (
var d: TDateTime; )
TDateTime ist ein Double Wert
und zählt die Tage seit dem
30.12.1899. Wird DateTime um 1 erhöht, so wird ein Tag
hinzugezählt.
1 Tag hat 86400 Sekunden, möchte mal also eine Sekunde
hinzuzählen, so addiert man dem DateTime (1/86400. Für Minuten
(1/1440) und folglich (1/24) für Stunden.
|
d := Now
Showmessage(DateTimeToStr(d +(1/86400))); //
1 Sekunde zur aktuellen Zeit hinzufügen
Showmessage(DateTimeToStr(d
+(1/1440))); //
1 Minute zur aktuellen Zeit hinzufügen
Showmessage(DateTimeToStr(d
+(1/24))); //
1 Stunde zur aktuellen Zeit hinzufügen
Showmessage(DateTimeToStr(d +1)); //
1 Tag zum aktuellen Datum hinzufügen |
String auf Datumsformat prüfen (
var d: TDateTime; )
|
TryStrToDateTime(Edit1.Text,
d); //
steht im Editfeld ein gültiges Datumsformat, so ist der
Rückgabewert true |
Tage zwischen zwei Daten ermitteln (
var x: Integer; )
|
x :=
round(StrToDate('01.01.2000') -TDateTime(Now));
//
Beispiel mit Datumsformat deutschsprachiger Raum
Edit1.Text := IntToStr(x); |
Aktuelle Zeit in Sekunden ermitteln
|
function GetSeconds: Integer;
begin
Result := StrToInt(copy(TimeToStr(TDateTime(Time)),1,2))*3600
+StrToInt(copy(TimeToStr(TDateTime(Time)),4,2))*60
+StrToInt(copy(TimeToStr(TDateTime(Time)),7,2))
end; |
Sekunden in Zeit wandeln
|
function
SecondsToTime(wSeconds: Word): TDateTime;
begin
Result := (1 /
24 / 60
/ 60) * wSeconds;
end; |
Millisekunden in Zeit.
|
Millisekunden :=
34562;
Edit1.Text :=
FormatDateTime('hh:mm:ss',
IncMilliSecond(0,
Millisekunden) |
Zeit zwischen zwei TDateTime's ermitteln
(benötigt
DateUtils in Uses)
|
var
ZeitA, ZeitB: TDateTime;
// benötigt DateUtils in Uses Edit1.Text :=
IntToStr(hoursBetween(ZeitA, ZeitB)); //
Stunden
Edit2.Text := IntToStr(MinutesBetween(ZeitA, ZeitB));
//Minuten
Edit3.Text := IntToStr(SecondsBetween(ZeitA, ZeitB));
// Sekunden
Edit4.Text := IntToStr(MilliSecondsBetweenBetween(ZeitA, ZeitB)); //
Millisekunden |
Sommerzeit ermitteln (DST
- Daylight Saving Time)
Der Code gilt
für die Sommerzeitregelung in Deutschland ab dessen Einführung
1980 bis heute. Ab 1996 gilt europaweit (außer Island) die
einheitliche Sommerzeitregelung. Die Sommerzeit startet am
letzten Sonntag im März (2:00 Uhr -- > 3:00 Uhr) und endet am
letzten Sonntag im Oktober (3:00 Uhr --> 2:00 Uhr).
|
function
IsSummertime(ADate:TDateTime):boolean;
var
AYear, AMonth, ADay : word;
Beginn, Ende : TDateTime;
begin
try
ADate := trunc(ADate);
DecodeDate(ADate, AYear, AMonth, ADay);
if AYear <
1980 then
{ Keine Sommerzeit vor 1980 }
Result := False
else begin
{ Beginn der Sommerzeit: }
Beginn := EncodeDate(AYear,
3, 31);
while
DayOfWeek(Beginn) <> 1
do
Beginn := Beginn -1;
{ Ende der Sommerzeit: }
if AYear <=
1995 then
{ bis 1995: letzter So im September }
Ende := EncodeDate(AYear,
9, 30)
else
{
ab 1996: letzter So im Oktober }
Ende := EncodeDate(AYear,
10, 31);
while
DayOfWeek(Ende) <> 1
do
Ende := Ende
-1;
Result := (ADate>=Beginn)
and (ADate<Ende);
end;
except
Result := False;
end;
end;
{IsSummertime} |
Quelle:
unit SRUtils von Simon Reinhardt |
Beispiel:
|
if
IsSummertime(now)
then
showmessage('es ist Sommerzeit')
// DST
else
showmessage('es ist Winterzeit');
// Normalzeit |
|