C ++ Datum und Uhrzeit

8

Ich entwickle eine Terminanwendung in C ++ und möchte einige Datums- und Uhrzeitfunktionen verwenden.

Ist es einfacher, Strings zu verwenden, wenn Sie über Datum und Uhrzeit sprechen, oder sollte ich eine Date / Time-Klasse schreiben oder bekommen?

Ich möchte eine Terminklasse programmieren, die sowohl die Uhrzeit als auch das Datum eines Termins enthält. Sobald ich die Klassendatei codiert habe, möchte ich sie in eine Formularanwendung in C ++ Builder integrieren.

Ich sehe, dass es ein TMonthCalendar-Steuerelement gibt. Ich möchte dieses Steuerelement beim Erstellen der Formularanwendung verwenden. Welches Format für das Datum wird von diesem Steuerelement verwendet? Ich möchte den gleichen Typ wie das Steuerelement verwenden, wenn ich die Klasse mache, damit ich sie leicht integrieren kann.

AKTUALISIEREN

Ich habe festgestellt, dass es den TDateTime-Typ verwendet. Meine Frage ist dies: Was Include-Anweisung muss ich verwenden, um dies in einer Konsolenanwendung zu verwenden?

    
Darryl Janecek 10.09.2012, 06:19
quelle

2 Antworten

14

C ++ 11 enthält Convenience-Datentypen und -Funktionen für Datums- / Zeitdarstellungen sowie deren Umwandlung in Strings.

Damit kannst du so etwas machen (ziemlich selbsterklärend, denke ich):

%Vor%

Insbesondere gibt es die Datentypen std::time_t und std::tm und einen sehr netten IO-Manipulator std::put_time für schönes Drucken. Die Formatstrings, die von ihm verwendet werden, sind in cppreference gut dokumentiert.

Dies soll auch gut mit Lokalen zusammenarbeiten, z.B. für ein japanisches Zeit- / Datumsformat:

%Vor%

Die chrono -Bibliothek, die in der C ++ 11-Standardbibliothek enthalten ist, ermöglicht Ihnen auch eine einfache Zeit / Datum-Arithmetik bequem durchzuführen:

%Vor%

Leider ist noch nicht alles in allen Compilern verfügbar. Insbesondere scheint die Funktion std::put_time in GCC 4.7.1 noch nicht verfügbar zu sein. Um den Code zu bekommen, den ich anfangs gab, musste ich die etwas weniger elegante Funktion std::strftime verwenden:

%Vor%     
jogojapan 10.09.2012 06:43
quelle
1
  

Ist es einfacher, Strings zu verwenden, wenn Sie über Datum und Uhrzeit sprechen?

Nein. Selbst einfache Dinge wie die Berechnung einer Dauer, wenn Sie ein Meeting Anfang und Ende haben, müssen komplexe Dinge wie Schaltjahre berücksichtigen.

  

Soll ich eine Date / Time-Klasse schreiben oder bekommen?

Nein. Das Schreiben einer Date / Time Library scheint einfach zu sein, aber es ist ziemlich schwierig, richtig zu kommen und ist extrem leicht falsch zu machen . Andere haben es schon einmal gemacht - boost ist eine Sammlung von kostenlosen Bibliotheken mit herausragendem Ruf . So viele andere in der Tat, dass es ein Klischee geworden ist, dass Anfänger-Programmierer eine Date / Time-Bibliothek schreiben wollen, failing schrecklich bei es .

  

Ich sehe, dass es ein TMonthCalendar-Steuerelement gibt. [...] Ich habe festgestellt, dass es den Typ TDateTime verwendet.

Wenn Sie sich auf die gleiche Date / Time-Klasse wie Ihr GUI-Framework verlassen, ist es in Ordnung, aber wenn Sie später das GUI-Framework ändern, kann dies zu einem Problem werden. Da es nicht schwer ist, später eine sinnvolle Date / Time-Bibliothek für eine andere sinnvolle Date / Time-Bibliothek zu tauschen, verwenden Sie einfach eine, die Sie einfach verwenden können.

    
Peter 16.10.2015 15:44
quelle

Tags und Links