11 Stimme

Delphi/Lazarus: DateTime in Tag, Monat, Jahr, Stunde, Minute und Sekunde splitten

Frage von Gast | 18.09.2015 um 23:21

Ich würde gerne Datum und Zeit aus einer TDateTime-Variable in einzelne Integer-Variablen aufteilen. Also eine eigene Variable für den Tag, dem Monat, das Jahr, die Stunden, die Minuten und die Sekunden.

Ich habe nun schon etwas herum probiert und versucht eine eigene Funktion zu schreiben, doch das will nicht so ganz gelingen. Hat vielleicht jemand schon eine Funktion für diesen Anlass geschrieben? Vielen Dank.

AntwortenPositivNegativ
1Beste Antwort1 Stimme

Es ist gar nicht nötig, eine neue eigene Funktion für diesen Anlass zu schreiben, denn sowohl Delphi als auch Lazarus kommen bereits mit einer fertigen Funktion dafür. Es ist die Funktion DecodeDateTime aus der Unit DateUtils, die wir natürlich zu unserer USES-Section hinzufügen müssen.

Alternativ können wir auch die Funktionen DecodeDate und DecodeTime benutzen. Hier ist ein kleines Beispiel für alle drei Funktionen.

uses DateUtils;

var
  ADateTime: TDateTime;
  AYear, AMonth, ADay: integer;
  AHour, AMinute, ASecond: integer;
begin
  ADate  := now;	
 
  // Version mit DecodeDateTime
  DecodeDateTime(ADate, AYear, AMonth, ADay, AHour, AMinute, ASecond);

  // oder Alternative mit DecodeDate und DecodeTime
  DecodeDate(ADate, AYear, AMonth, ADate);
  DecodeTime(ADate, AHour, AMinute, ASecond);

  ShowMessage('Jahr: '    + IntToStr(AYear));
  ShowMessage('Monat: '   + IntToStr(AMonth));
  ShowMessage('Tag: '     + IntToStr(ADay));
  ShowMessage('Stunde: '  + IntToStr(AHour));
  ShowMessage('Minute: '  + IntToStr(AMinute));
  ShowMessage('Sekunde: ' + IntToStr(ASecond));

end;

Zunächst setzen wir die Variable ADate auf die aktuelle Zeit. Anschließend möchten wir diese Zeit in die einzelnen Bestandteile (Jahr, Monat, Tag, Stunde, Minute und Sekunde) aufteilen, wofür wir jeweils einzelne Integer-Variablen deklariert haben.

Entweder benutzen wir nur die Funktion DecodeDateTime, der wir alle Variablen übergeben können und entsprechend die einzelnen Werte gesetzt bekommen oder wir benutzen nacheinander die Funktionen DecodeDate und DecodeTime.

Anschließend stehen in den Variablen AYear, AMonth, ADay, AHour, AMinute und ASecond unsere Zeitangaben und wir geben alle nacheinander mit der Funktion ShowMessage() aus.
21.09.2015 um 18:31

AntwortenPositiv Negativ
Antworten

Ähnliche Themen

Wichtiger Hinweis

Bitte beachten Sie: Die Beiträge auf askingbox.de sind Beiträge von Nutzern und sollen keine professionelle Beratung ersetzen. Sie werden nicht von Unabhängigen geprüft und spiegeln nicht zwingend die Meinung von askingbox.de wieder. Mehr erfahren.

Jetzt mitmachen

Stellen Sie Ihre eigene Frage oder schreiben Sie Ihren eigenen Artikel auf askingbox.de. So gehts.