#include #include int main (void) { struct tm tmnow_utc, tmlocal_time; time_t tnow_utc; int days; time(&tnow_utc); // aktuelle Zeit in UTC holen tmnow_utc = *gmtime(&tnow_utc); // gmtime füllt die tm Felder printf("Aktuelle Zeit in UTC: %s", asctime(&tmnow_utc)); // Zeitstring basteln und anzeigen tmlocal_time = *localtime(&tnow_utc); // Felder füllen UTC -> Lokalzeit printf("Aktuelle lokale Zeit: %s\n", asctime(&tmlocal_time)); // Zeitstring basteln und anzeigen /* Wir addieren oder subtrahieren eine beliebige Anzahl Tage vom aktuellen Datum. Das funktioniert aber nur im Bereich der Jahre 1970 bis 2038... Man beachte den zusätzlichen Unterschied der lokalen Zeit, falls das errechnete Datum in den Zeitraum der Sommerzeit fällt. Damit die UTC auch während der Sommerzeit unverändert bleibt, muss man unten tmnow_utc.tm_isdst = -1; schreiben (auf einen negativen Wert setzten). Dann erechnet die C-Runtimelib die notwendige weitere Stunde Zeitdifferenz anhand des "neuen" Datums und nach den "Sommerzeitregeln" in den USA. */ printf("Wie viele Tage sollen addiert oder subrahiert (-) werden? "); scanf("%d", &days); // UTC tmnow_utc.tm_mday += days; tmnow_utc.tm_isdst = -1; // !WICHTIG! Einfach mal auskommentieren... mktime(&tmnow_utc); // neues Datum berechnen printf("Neues Datum (UTC) : %s", asctime(&tmnow_utc)); // Lokal tmlocal_time.tm_mday += days; mktime(&tmlocal_time); printf("Neues Datum (Lokal): %s\n", asctime(&tmlocal_time)); return 0; }