BESTE WEBSITE FÜR WEBENTWICKLER

C++ Lernprogramm

C++ HEIM C++ Einführung C++ Loslegen C++ Syntax C++ Ausgabe C++-Kommentare C++-Variablen C++-Benutzereingabe C++-Datentypen C++ Betreiber C++-Strings C++ Math C++ Booleans C++-Bedingungen C++ Switch C++ While-Schleife C++ For-Schleife C++ Break/Continue C++-Arrays C++-Strukturen C++-Aufzählungen C++-Referenzen C++ Hinweise

C++ Funktionen

C++-Funktionen C++-Funktionsparameter Überladen von C++-Funktionen C++-Bereich C++-Rekursion

C++-Klassen

C++ OOP C++-Klassen/Objekte C++-Klassenmethoden C++-Konstruktoren C++-Zugriffsspezifizierer C++-Kapselung C++-Vererbung C++-Polymorphismus C++-Dateien C++-Ausnahmen C++-Datum

C++ Wie man

Zwei Zahlen hinzufügen Zufallszahlen

C++-Referenz

C++-Referenz C++-Schlüsselwörter C++ <iostream> C++ <fstream> C++ <cmath> C++ <string> C++ <cstring> C++ <ctime>

C++-Beispiele

C++-Beispiele C++-Compiler C++-Übungen C++-Quiz C++-Zertifikat

C++ Sprache. W3Schools auf Deutsch. Unterricht für Anfänger

Ua En Es Fr

C++ Datum und Uhrzeit


Datum und Uhrzeit (Date und Time)

Die <ctime>-Bibliothek ermöglicht es uns, mit Datums- und Uhrzeitangaben zu arbeiten.

Um es zu verwenden, müssen Sie die Header-Datei <ctime> importieren:

Beispiel

#include <ctime> // Importieren Sie die ctime-Bibliothek

Aktuelles Datum und aktuelle Uhrzeit anzeigen

Die <ctime>-Bibliothek verfügt über eine Vielzahl von Funktionen zum Messen von Datum und Uhrzeit.

Die Funktion time() gibt uns einen Zeitstempel, der das aktuelle Datum und die aktuelle Uhrzeit darstellt. Wir können die Funktion ctime() verwenden, um das Datum und die Uhrzeit anzuzeigen, die ein Zeitstempel darstellt:

Beispiel

Aktuelles Datum anzeigen:

// Rufen Sie den Zeitstempel für das aktuelle Datum und die aktuelle Uhrzeit ab
time_t timestamp;
time(&timestamp);

// Zeigt das durch den Zeitstempel dargestellte Datum und die Uhrzeit an
cout << ctime(&timestamp);
Try it Yourself »

Zwei Möglichkeiten, die Funktion time() zu verwenden

Die Funktion time() schreibt einen Zeitstempel an den durch den Parameter angegebenen Speicherort, gibt aber auch den Wert des Zeitstempels zurück.

Eine alternative Möglichkeit, die Funktion time() zu verwenden, besteht darin, einen NULL-Zeiger zu übergeben und stattdessen den Rückgabewert zu verwenden.

time_t timestamp = time(NULL);

Datentypen

Es gibt zwei verschiedene Datentypen, die zum Speichern von Datum und Uhrzeit verwendet werden: time_t für Zeitstempel und struct tm für datetime-Strukturen.

Zeitstempel stellen einen Zeitpunkt als einzelne Zahl dar, was dem Computer die Berechnung erleichtert.

Datetime-Strukturen sind Strukturen, die als Mitglieder verschiedene Komponenten des Datums und der Uhrzeit darstellen. Dies erleichtert uns die Angabe von Terminen. Datetime-Strukturen haben die folgenden Mitglieder:

  • tm_sec – Die Sekunden innerhalb einer Minute
  • tm_min – Die Minuten innerhalb einer Stunde
  • tm_hour – Die Stunde innerhalb eines Tages (von 0 bis 23)
  • tm_mday – Der Tag des Monats
  • tm_mon – Der Monat (von 0 bis 11, beginnend mit Januar)
  • tm_year – Die Anzahl der Jahre seit 1900
  • tm_wday – Der Wochentag (von 0 bis 6, beginnend mit Sonntag)
  • tm_yday – Der Tag des Jahres (von 0 bis 365, wobei 0 der 1. Januar ist)
  • tm_isdst – Positiv, wenn die Sommerzeit in Kraft ist, Null, wenn sie nicht in Kraft ist, und negativ, wenn die Sommerzeit unbekannt ist

Beachten Sie immer die Art und Weise, wie Datumskomponenten dargestellt werden:

  • Die Stunden werden im 24-Stunden-Format dargestellt. 23 Uhr würde als 23 dargestellt.
  • Die Monate reichen von 0 bis 11. Beispielsweise würde Dezember als 11 statt als 12 dargestellt.
  • Jahre werden relativ zum Jahr 1900 dargestellt. Das Jahr 2024 würde als 124 dargestellt, da seit 1900 124 Jahre vergangen sind.

Zeitstempel erstellen

Die Funktion time() kann nur einen Zeitstempel für das aktuelle Datum erstellen, aber wir können einen Zeitstempel für jedes Datum erstellen, indem wir die Funktion verwenden mktime().

Die Funktion mktime() wandelt eine Datetime-Struktur in einen Zeitstempel um.

Beispiel

Erstellen Sie einen Zeitstempel mit der Funktion mktime():

struct tm datetime;
time_t timestamp;

datetime.tm_year = 2023 - 1900; // Anzahl der Jahre seit 1900
datetime.tm_mon = 12 - 1; // Anzahl der Monate seit Januar
datetime.tm_mday = 17;
datetime.tm_hour = 12;
datetime.tm_min = 30;
datetime.tm_sec = 1;
// Die Sommerzeit muss angegeben werden
// -1 Verwendet die Zeitzoneneinstellung des Computers
datetime.tm_isdst = -1;

timestamp = mktime(&datetime);

cout << ctime(&timestamp);
Try it Yourself »

Hinweis: Für die Funktion mktime() müssen diese Mitglieder einen Wert haben: tm_year, tm_mon, tm_mday, tm_hour, tm_min, tm_sec und tm_isdst.


Erstellen von Datetime-Strukturen

Die Funktion mktime() füllt auch tm_wday und tm_yday aus Mitglieder der datetime-Struktur mit den richtigen Werten, wodurch die Struktur vervollständigt wird und eine gültige datetime-Struktur bereitgestellt wird. Es kann beispielsweise verwendet werden, um den Wochentag eines bestimmten Datums zu ermitteln:

Beispiel

Finden Sie den Wochentag eines bestimmten Datums:

// Erstellen Sie die Datetime-Struktur und füllen Sie die fehlenden Elemente mit mktime aus
struct tm datetime;
datetime.tm_year = 2023 - 1900; // Anzahl der Jahre seit 1900
datetime.tm_mon = 12 - 1; // Anzahl der Monate seit Januar
datetime.tm_mday = 17;
datetime.tm_hour = 0; datetime.tm_min = 0; datetime.tm_sec = 0;
datetime.tm_isdst = -1;
mktime(&datetime);

string weekdays[] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};

cout << "Das Datum steht auf " << weekdays[datetime.tm_wday];
Try it Yourself »

Die Funktionen localtime() und gmtime() können Zeitstempel in Datetime-Strukturen konvertieren.

Die Funktion localtime() gibt einen Zeiger auf eine Struktur zurück, die die Zeit in der Zeitzone des Computers darstellt.

Die Funktion gmtime() gibt einen Zeiger auf eine Struktur zurück, die die Zeit in der GMT-Zeitzone darstellt.

Diese Funktionen geben einen Zeiger auf eine Datetime-Struktur zurück. Wenn wir sicherstellen möchten, dass sich sein Wert nicht unerwartet ändert, sollten wir eine Kopie davon erstellen, indem wir den Zeiger dereferenzieren. Weitere Informationen zur Dereferenzierung finden Sie auf der Seite C++-Dereferenzierung.

Beispiel

Rufen Sie eine Datetime-Struktur ab und geben Sie die aktuelle Stunde aus:

time_t timestamp = time(&timestamp);
struct tm datetime = *localtime(&timestamp);

cout << datetime.tm_hour;
Try it Yourself »

Termine anzeigen

Bisher haben wir die Funktion ctime() verwendet, um das in einem Zeitstempel enthaltene Datum anzuzeigen. Um Daten aus einer Datetime-Struktur anzuzeigen, können wir die Funktion asctime() verwenden.

Beispiel

Zeigt das Datum an, das durch eine Datetime-Struktur dargestellt wird:

time_t timestamp = time(NULL);
struct tm datetime = *localtime(&timestamp);

cout << asctime(&datetime);
Try it Yourself »

Hinweis: Die Funktion asctime() korrigiert keine ungültigen Datumsangaben. Wenn Sie beispielsweise den Tag des Monats auf 32 festlegen, wird 32 angezeigt. Die Funktion mktime() kann diese Art von Fehlern korrigieren:

Beispiel

Korrigieren Sie ein Datum, bevor Sie es anzeigen:

// Erstellen Sie die Datetime-Struktur und verwenden Sie mktime, um Fehler zu korrigieren
struct tm datetime;
datetime.tm_year = 2022 - 1900; // Anzahl der Jahre seit 1900
datetime.tm_mon = 0; // 0 ist Januar
datetime.tm_mday = 32;
datetime.tm_hour = 0; datetime.tm_min = 0; datetime.tm_sec = 0;
datetime.tm_isdst = -1;
mktime(&datetime);

cout << asctime(&datetime);
Try it Yourself »

Mit den Funktionen ctime() und asctime() können wir das Datum anzeigen, aber nicht um auszuwählen, wie es angezeigt wird.

Um auszuwählen, wie ein Datum angezeigt wird, können wir die Funktion strftime() verwenden.

Beispiel

Stellen Sie das aktuelle Datum auf unterschiedliche Weise dar:

time_t timestamp = time(NULL);
struct tm datetime = *localtime(&timestamp);

char output[50];

strftime(output, 50, "%B %e, %Y", &datetime);
cout << output << "\n";

strftime(output, 50, "%I:%M:%S %p", &datetime);
cout << output << "\n";

strftime(output, 50, "%m/%d/%y", &datetime);
cout << output << "\n";

strftime(output, 50, "%a %b %e %H:%M:%S %Y", &datetime);
cout << output << "\n";
Try it Yourself »

Die Funktion strftime() formatiert ein Datum und schreibt es als Zeichenfolge im C-Stil in ein char-Array. Es hat vier Parameter:

  1. Der erste Parameter zeigt auf das char-Array, in das das formatierte Datum geschrieben wird.
  2. Der zweite Parameter gibt den im Array verfügbaren Platz an.
  3. Mit dem dritten Parameter können wir mithilfe von Formatbezeichnern auswählen, wie das Datum formatiert wird.
  4. Der letzte Parameter ist ein Zeiger auf die Datetime-Struktur, die das Datum enthält, das wir anzeigen möchten.

Die folgende Tabelle enthält einige nützliche Formatspezifizierer. Eine vollständigere Liste finden Sie auf der Seite strftime()-Referenz.

Formatbezeichner Beschreibung Beispiel
%a Kurze Darstellung des Wochentags Fri
%b Kurze Darstellung des Monatsnamens Dec
%B Vollständige Darstellung des Monatsnamens December
%d Tag des Monats mit führender Null 09
%e Tag des Monats mit führenden Leerzeichen  9
%H 24-Stunden-Format einer Stunde 14
%I 12-Stunden-Format einer Stunde 02
%M Minuten innerhalb einer Stunde 30
%p AM oder PM PM
%S Sekunden innerhalb einer Minute 01
%y 2-stellige Jahresdarstellung 23
%Y 4-stellige Jahresdarstellung 2023

Zeit messen

Es gibt zwei verschiedene Funktionen, mit denen Zeitunterschiede gemessen werden können.

Die Funktion difftime() misst die Anzahl der Sekunden, die zwischen zwei verschiedenen Zeitstempeln verstrichen sind. Dies ist nützlich, wenn Sie Zeitunterschiede zwischen Datumsangaben messen.

Beispiel

Messen Sie den Zeitunterschied zwischen zwei Zeitstempeln

time_t now;
time_t nextyear;
struct tm datetime;

now = time(NULL);
datetime = *localtime(&now);
datetime.tm_year = datetime.tm_year + 1;
datetime.tm_mon = 0;
datetime.tm_mday = 1;
datetime.tm_hour = 0; datetime.tm_min = 0; datetime.tm_sec = 0;
datetime.is_dst = -1;
nextyear = mktime(&datetime);

int diff = difftime(nextyear, now);

cout << diff << " seconds until next year";
Try it Yourself »

Die Funktion clock() ist nützlich, um kurze Zeitintervalle während der Programmausführung zu messen. Sie ist präziser als die Funktion difftime().

Jeder Aufruf der Uhrfunktion gibt einen speziellen Zeitstempel zurück, der in Uhren gemessen wird (eine Zeiteinheit, die davon abhängt, wie die Bibliothek implementiert wurde) und den Datentyp clock_t hat. Um einen Zeitunterschied zu messen, speichern Sie einen Zeitstempel zu zwei verschiedenen Zeitpunkten und subtrahieren Sie diese dann. Der Zeitunterschied wird in Uhren gemessen, Sie können ihn jedoch in Sekunden umrechnen, indem Sie ihn durch die Konstante CLOCKS_PER_SEC dividieren.

Beispiel

Messen Sie, wie lange es dauert, bis das Programm ausgeführt wird:

clock_t before = clock();
int k = 0;
for(int i = 0; i < 100000; i++) {
k += i;
}
clock_t duration = clock() - before;
cout << "Duration: " << (float)duration / CLOCKS_PER_SEC << " seconds";
Try it Yourself »

Hinweis: Stellen Sie sicher, dass Sie den Wert vor der Division in einen Typ float oder double umwandeln, andernfalls dies kann zu einer ganzzahligen Division führen, die dazu führen würde, dass der Dezimalteil abgeschnitten wird.


Vollständige <ctime>Referenz

Eine vollständige Referenz der <ctime>-Funktionen finden Sie in unserer C++-ctime-Referenz.



Kommentare