Sdílet prostřednictvím


_mkgmtime, _mkgmtime32, _mkgmtime64

Převede čas UTC reprezentovaný časem struct tm UTC na čas UTC reprezentovaný typem time_t .

Syntaxe

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 struct tm převod.

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 v koordinovaném univerzálním čase (UTC). Pokud je datum mimo rozsah (viz oddíl Poznámky) nebo nelze vstup interpretovat jako platný čas, návratová hodnota je -1.

Poznámky

_mkgmtime64 Funkce _mkgmtime32 převedou čas UTC na __time32_t čas nebo __time64_t typ představující čas v UTC. Chcete-li převést místní čas na čas UTC, použijte mktime_mktime32, a _mktime64 místo toho.

_mkgmtime je vložená funkce, která je vyhodnocena jako _mkgmtime64, a time_t je ekvivalentní __time64_t. Pokud potřebujete vynutit, aby kompilátor interpretoval time_t jako starý 32bitový time_t, můžete definovat _USE_32BIT_TIME_T. Nedoporučujeme to, protože vaše aplikace může selhat po 18. lednu 2038, maximální rozsah 32bitové time_tverze . Není povolené vůbec na 64bitových platformách.

Předaná časová struktura je změněna následujícím způsobem, stejně jako je změněna _mktime funkcemi: pole tm_wday a tm_yday pole jsou nastaveny na nové hodnoty na základě hodnot a tm_mdaytm_year. Vzhledem k tomu, že se předpokládá, že čas je UTC, tm_isdst pole se ignoruje.

Rozsah _mkgmtime32 funkce je od půlnoci, 1. ledna 1970, UTC do 23:59:59 18, 2038, UTC. Rozsah _mkgmtime64 je od půlnoci, 1. ledna 1970, UTC do 23:59:59, 31. prosince 3000, UTC. Výsledkem data mimo rozsah je návratová hodnota -1. Rozsah _mkgmtime závisí na tom, zda _USE_32BIT_TIME_T je definován. Pokud není definován, což je výchozí hodnota, rozsah je stejný jako _mkgmtime64. V opačném případě je rozsah omezen na 32bitový rozsah _mkgmtime32.

localtime Pro gmtime převod použijte společnou statickou vyrovnávací paměť. Pokud tuto vyrovnávací paměť _mkgmtimezadáte, předchozí obsah se zničí.

Příklady

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

}
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 je vyplněna _mkgmtime. Vypočítá hodnoty pro den v týdnu i rok.

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

}
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é

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