Sdílet prostřednictvím


_mkgmtime, _mkgmtime32, _mkgmtime64

Převede čas UTC zastoupen tmstruct zastoupen na čas UTC time_t typu.

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

Parametry

  • timeptr
    ukazatel na čas UTC, jako structtm převést.

Vrácená hodnota

Množství typu __time32_t nebo __time64_t představující počet sekund uplynulých od půlnoci 1. ledna 1970, koordinovaný světový čas (UTC).Pokud datum je mimo rozsah (viz poznámky) nebo vstupní nelze interpretovat jako platný čas, je vrácena hodnota-1.

Poznámky

_mkgmtime32 a _mkgmtime64 funkce převést UTC Čas __time32_t nebo __time64_t typu představující čas v čase UTC.Použít pro převést místního času na čas UTC, mktime, _mktime32, a _mktime64 místo.

_mkgmtimevloženýfunkce , jejíž výsledkem je _mkgmtime64, a time_t je ekvivalentní __time64_t. Nutné vynutit kompilátor interpretace time_tjako staré 32-bit time_t, můžete definovat _USE_32BIT_TIME_T.Nedoporučujeme, protože aplikace může selhat po 01.01.08 19 (maximální rozsah 32-bit time_t), a není povoleno vůbec na 64bitových platformách.

Čas struktura předaný se změní takto, stejným způsobem jako jsou změněna _mktime funkce: tm_wday a tm_yday pole nastavení nové hodnoty na základě hodnoty tm_mday a tm_year.Při zadávání tm struktura čas nastaven tm_isdst pole :

  • Nula (0) označuje, že je v platnosti standardní čas.

  • Hodnota větší než 0 označuje, že je v platnosti letní čas.

  • Hodnota menší než nula , mít kód C Runtime knihovna vypočítat, zda standardní čas nebo letní čas je v platnosti.

C Runtime knihovna pomocíproměnná prostředíTZ správné letní čas. Pokud není nastaven TZ, operační systém je dotazován získat správné regionální letní čas chování.tm_isdstje povinné pole.Pokud není nastavena, její hodnota je undefined a vrácené hodnoty z mktime nelze předvídat.

Oblast _mkgmtime32je funkce od půlnoci 1. ledna 1970 UTC do 19. ledna 3: 14: 07 2038, UTC. Oblast _mkgmtime64 od půlnoci 1. ledna 1970 UTC je do 31. prosince 3000 23: 59: 59 UTC.Datum mimo rozsah výsledků vrácenou hodnotu –1.Oblast _mkgmtime závisí na tom, zda _USE_32BIT_TIME_T je definován.Pokud není definován (výchozí) rozsahu je _mkgmtime64; jinak je omezena na 32 bitů rozsahu oblast _mkgmtime32.

Všimněte si, že gmtime a localtime použití jedné staticky přidělené vyrovnávací paměti pro převod.Je-li k této vyrovnávací paměti mkgmtime, předchozí obsah jsou zničeny.

Příklad

// 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 );

}

Vzorový výstup

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

Následující příklad ukazuje, jak neúplné struktura se vyplní vypočtených hodnot den v týdnu a den v roce.

// 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 );

}

Výsledek

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

Viz také

Referenční dokumentace

Aplikace Správa času

asctime _wasctime

asctime_s _wasctime_s

gmtime, _gmtime32, _gmtime64

gmtime_s, _gmtime32_s, _gmtime64_s

localtime_s, _localtime32_s, _localtime64_s

mktime, _mktime32, _mktime64

time, _time32, _time64