C:
Zwei Daten vergleichen
Wie geht das:
C hat keinen integrierten Typ für Daten, was die Verwendung der time.h
-Bibliothek zur Arbeit mit Datum- und Zeitstrukturen notwendig macht. Die tm
-Struktur und die Funktion difftime()
werden üblicherweise verwendet, um Daten zu vergleichen. Unten ist ein Beispiel, das zeigt, wie man zwei Daten vergleicht:
#include <stdio.h>
#include <time.h>
int main() {
struct tm date1 = {0};
struct tm date2 = {0};
double seconds;
// Erstes Datum (JJJJ, MM, TT)
date1.tm_year = 2023 - 1900; // Jahr seit 1900
date1.tm_mon = 3 - 1; // Monat [0-11]
date1.tm_mday = 15; // Tag des Monats [1-31]
// Zweites Datum (JJJJ, MM, TT)
date2.tm_year = 2023 - 1900;
date2.tm_mon = 4 - 1;
date2.tm_mday = 14;
// Umwandeln in time_t-Format
time_t time1 = mktime(&date1);
time_t time2 = mktime(&date2);
// Vergleichen
seconds = difftime(time1, time2);
if (seconds == 0) {
printf("Die Daten sind identisch.\n");
} else if (seconds > 0) {
printf("Das erste Datum liegt nach dem zweiten Datum.\n");
} else {
printf("Das erste Datum liegt vor dem zweiten Datum.\n");
}
return 0;
}
Die Ausgabe könnte sein:
Das erste Datum liegt vor dem zweiten Datum.
Dieses Programm initialisiert zwei tm
-Strukturen mit spezifischen Daten, wandelt diese mit mktime()
in das time_t
-Format um und vergleicht sie schließlich mit difftime()
, das die Differenz in Sekunden (als double
) zwischen den beiden Zeiten zurückgibt.
Vertiefung
In den Anfangstagen von C erforderten Datums- und Zeitoperationen manuelle Berechnungen, oft unter Berücksichtigung von Schaltjahren, der unterschiedlichen Anzahl von Tagen in den Monaten und sogar Schaltsekunden. Die Einführung von time.h
im ANSI-C-Standard brachte eine Standardisierung der Zeitbehandlung in C, was die Datums- und Zeitoperationen vereinfachte.
Die Verwendung von time.h
für den Datenvergleich ist unkompliziert, hat aber Einschränkungen. Die tm
-Struktur berücksichtigt keine Zeitzonen oder Sommerzeit, und difftime()
liefert nur die Differenz in Sekunden und fehlt an Feingranularität für bestimmte Anwendungen.
Für Anwendungen, die robustere Datum-Zeit-Operationen erfordern, einschließlich der Unterstützung für Zeitzonen, Übergänge der Sommerzeit und präzisere Zeitintervalle, bieten Bibliotheken wie date.h
(eine Howard Hinnant-Datum-Bibliothek, kein Teil der Standardbibliothek) eine moderne Alternative zu time.h
. Diese Bibliotheken bieten umfassendere Werkzeuge für Datum-Zeit-Manipulationen in C++, profitieren von Jahrzehnten der Evolution im Programmiersprachendesign. Für C-Programmierer bleibt das Nutzen dieser externen Bibliotheken oder das akribische Handhaben der Feinheiten von Datum-Zeit-Berechnungen direkt notwendig, um präzise und kulturell bewusste Datum-Zeit-Manipulationen zu erreichen.