Udostępnij za pośrednictwem


_mkgmtime, _mkgmtime32, _mkgmtime64

Konwertuje czas UTC, reprezentowana przez tmstruct do czasu UTC reprezentowane przez time_t typu.

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

Parametry

  • timeptr
    wskaźnik do czasu UTC jako structtm do konwertować.

Wartość zwracana

Ilość typu __time32_t lub __time64_t reprezentującą liczbę sekund, jaka upłynęła od północy, 1 stycznia 1970 roku w uniwersalnym czasem koordynowanym (UTC).Jeśli data jest poza zakresem (zobacz sekcję Spostrzeżenia) lub dane wejściowe nie mogą być interpretowane jako prawidłowy czas, zwracana jest wartość –1.

Uwagi

_mkgmtime32 i _mkgmtime64 funkcje konwertować UTC czasu do __time32_t lub __time64_t typu, reprezentujące czasu UTC.Aby konwertować czasu lokalnego do czasu UTC, użyj mktime, _mktime32, i _mktime64 zamiast.

_mkgmtimew tekściefunkcja , dającą w _mkgmtime64, i time_t jest równoważne z __time64_t. Jeśli trzeba wymusić kompilator interpretowania time_tjako stary 32-bitowe time_t, można zdefiniować _USE_32BIT_TIME_T.Nie jest to zalecane, ponieważ aplikacja może zakończyć się niepowodzeniem po 19 stycznia 2038 (maksymalny zasięg 32-bitowa time_t), i nie jest to dozwolone na wszystkich na platformach 64-bitowych.

Czas struktura przekazany zostanie zmieniony w następujący sposób, w taki sam sposób zmienionego z _mktime funkcji: tm_wday i tm_yday pól są ustawione na nowe wartości na podstawie wartości z tm_mday i tm_year.Podczas określania tmustawiony czas struktura tm_isdst pole :

  • Zero (0), aby wskazać, w rezultacie jest czas standardowy.

  • Wartość większa niż 0 wskazuje, że zmiany czasu letniego jest aktywna.

  • Wartości mniejsze od zero do kodu c run-time biblioteka obliczyć, czy czas standardowy lub zmiany czasu letniego jest aktywna.

C run-time biblioteka używa środowiskoTZzmienna do określenia czasu letniego poprawne. Jeśli TZ nie jest ustawiona, system operacyjny jest proszeni o get regionalnych letniego poprawne zachowanie czasu.tm_isdstjest to wymagane pole.Jeśli nie jest ustawiona, jej wartość jest niezdefiniowana i wartość zwracana z mktime jest nieprzewidywalne.

Zakres _mkgmtime32 funkcja jest od północy do północy, 1 stycznia 1970 roku UTC do 19 stycznia, 3: 14: 07 2038, UTC. Zakres _mkgmtime64 jest od północy 1 stycznia 1970 roku UTC do 23: 59: 59, 31 grudnia, 3000, UTC.Data spoza zakresu powoduje zwracana wartość –1.Zakres _mkgmtime zależy od tego, czy _USE_32BIT_TIME_T jest zdefiniowany.Jeśli nie zdefiniowano (domyślnie) zakresu jest _mkgmtime64; w przeciwnym wypadku zakres jest ograniczona do 32-bitowy zakres _mkgmtime32.

Należy zauważyć, że gmtime i localtime użyć pojedynczego statycznie przydzielonego buforu do konwersji.Jeśli podasz tego buforu do mkgmtime, poprzednia zawartość są niszczone.

Przykład

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

}

Przykładowe dane wyjściowe

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

Poniższy przykład pokazuje, jak niekompletne struktura jest wypełniane przy użyciu wartości kalkulowanej dzień tygodnia i dzień roku.

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

}

Dane wyjściowe

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

Zobacz też

Informacje

Zarządzanie czasem

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