_mkgmtime, _mkgmtime32, _mkgmtime64

Konvertiert die UTC-Zeit, die von tmstruct zur UTC-Zeit dargestellt wird, die durch einen time_t Typ dargestellt wird.

time_t _mkgmtime(
   struct tm* timeptr
);
__time32_t _mkgmtime32(
   struct tm* timeptr
);
__time64_t _mkgmtime64(
   struct tm* timeptr
);

Parameter

  • timeptr
    Ein Zeiger auf die structals UTC-Zeittm zu konvertieren.

Rückgabewert

Eine Menge Typ __time32_t oder __time64_t , die die Anzahl der seit Mitternacht vergangenen Sekunden darstellen, verstrich am 1. Januar 1970 in koordinierter Weltzeit (UTC).Wenn das Datum außerhalb des gültigen Bereichs (finden Sie im Abschnitt " Hinweise ") ist, oder die Eingabe kann nicht als Gültigkeitszeit interpretiert werden, ist der Rückgabewert 1.

Hinweise

Die _mkgmtime32 und _mkgmtime64-Funktion konvertieren eine UTC-Zeit auf einen __time32_t oder __time64_t Typ, der die Zeit in UTC darstellt.So erstellen Sie eine lokale Zeit zur UTC-Zeit zur Verwendung mktime, _mktime32und stattdessen _mktime64 zu konvertieren.

_mkgmtime ist eine Inlinefunktion, die _mkgmtime64ergibt, und time_t ist mit __time64_t.Wenn Sie den Compiler erzwingen müssen, um alte als time_t32-Bit- time_tinterpretiert wird, können Sie _USE_32BIT_TIME_Tdefinieren.Dies wird nicht empfohlen, da Ihre Anwendung möglicherweise nach dem 19. Januar 2038 (maximale) liegt außerhalb der 32-Bit-Version time_tfehlschlagen, und sie wird für alle auf 64-Bit-Plattformen nicht zulässig.

Die Zeit Struktur, die übergeben wird, wird genauso wie folgt geändert, wie sie mit den _mktime Funktionen geändert werden: tm_wday und die tm_yday Felder werden auf den neuen Werten anhand der Werte von tm_mday und tm_yearfestgelegt.Wenn Sie eine Struktur tm Zeit angibt, legen Sie das tm_isdst Feld fest:

  • Mit 0 (null), wenn Normalzeit gültig ist.

  • Ein Wert größer als 0, um anzugeben, dass die Sommerzeit gültig ist.

  • Ein Wert kleiner als Null, wenn die Berechnung des C-Laufzeitbibliotheks-Code, ob die Standardzeit oder Sommerzeit gültig ist.

Die C-Laufzeitbibliothek nutzt die TZ-Umgebungsvariable, um die richtige Sommerzeit zu bestimmen.Wenn TZ nicht festgelegt ist, wird das Betriebssystem abgefragt, um das richtige regionale Sommerzeit Verhalten abzurufen.tm_isdst ist ein Pflichtfeld.Wenn dies nicht festgelegt ist, wird ihr Wert undefined und der Rückgabewert von mktime ist unvorhersehbar.

Der Bereich der _mkgmtime32 Funktion ist vom am 1. Januar 1970 Mitternacht UTC 19. Januar, 3:14: 07, 2038, UTC.Der Bereich von Mitternacht UTC am 1. Januar 1970 ist vom _mkgmtime64 in 23:59: 59 3000 am 31. Dezember, UTC.Ein Datum außerhalb des Gültigkeitsbereichs ergibt einen Rückgabewert 1.Der Bereich von _mkgmtime hängt davon ab, ob _USE_32BIT_TIME_T definiert ist.Wenn keine (Standard) der Bereich, der von _mkgmtime64definiert ist. Andernfalls wird der Bereich auf den 32-Bit-Bereich von _mkgmtime32beschränkt.

Beachten Sie, dass gmtime und localtime einen einzelnen statisch verknüpften Puffer für die Konvertierung verwenden.Wenn Sie diesen Puffer an mkgmtimebereitstellen, werden die vorherigen Inhalte gelöscht.

Beispiel

// crt_mkgmtime.c
#include <stdio.h>
#include <time.h>

int main()
{
    struct tm t1, t2;
    time_t now, mytime, gmtime;
    char buff[30];

    time( & now );

    _localtime64_s( &t1, &now );
    _gmtime64_s( &t2, &now );

    mytime = mktime(&t1);
    gmtime = _mkgmtime(&t2);

    printf("Seconds since midnight, January 1, 1970\n");
    printf("My time: %I64d\nGM time (UTC): %I64d\n\n", mytime, gmtime);

    /* Use asctime_s to display these times. */

    _localtime64_s( &t1, &mytime );
    asctime_s( buff, sizeof(buff), &t1 );
    printf( "Local Time: %s\n", buff );

    _gmtime64_s( &t2, &gmtime );
    asctime_s( buff, sizeof(buff), &t2 );
    printf( "Greenwich Mean Time: %s\n", buff );

}

Beispielausgabe

Seconds since midnight, January 1, 1970
My time: 1171588492
GM time (UTC): 1171588492

Local Time: Thu Feb 15 17:14:52 2007

Greenwich Mean Time: Fri Feb 16 01:14:52 2007

Im Folgenden Beispiel wird gezeigt, wie die unvollständige Struktur mit den berechneten Werten des Wochentags und Tag des Jahres ergänzt wird.

// crt_mkgmtime2.c
#include <stdio.h>
#include <time.h>
#include <memory.h>

int main()
{
    struct tm t1, t2;
    time_t gmtime;
    char buff[30];

    memset(&t1, 0, sizeof(struct tm));
    memset(&t2, 0, sizeof(struct tm));

    t1.tm_mon = 1;
    t1.tm_isdst = 0;
    t1.tm_year = 103;
    t1.tm_mday = 12;

    // The day of the week and year will be incorrect in the output here.
    asctime_s( buff, sizeof(buff), &t1);
    printf("Before calling _mkgmtime, t1 = %s t.tm_yday = %d\n",
            buff, t1.tm_yday );

    gmtime = _mkgmtime(&t1);

    // The correct day of the week and year were determined.
    asctime_s( buff, sizeof(buff), &t1);
    printf("After calling _mkgmtime, t1 = %s t.tm_yday = %d\n",
            buff, t1.tm_yday );

}

Output

Before calling _mkgmtime, t1 = Sun Feb 12 00:00:00 2003
 t.tm_yday = 0
After calling _mkgmtime, t1 = Wed Feb 12 00:00:00 2003
 t.tm_yday = 42

Siehe auch

Referenz

Zeit-Verwaltung

asctime, _wasctime

asctime_s, _wasctime_s

gmtime, _gmtime32, _gmtime64

gmtime_s, _gmtime32_s, _gmtime64_s

localtime_s, _localtime32_s, _localtime64_s

mktime, _mktime32, _mktime64

Zeit, _time32, _time64