_mkgmtime
, , _mkgmtime32
_mkgmtime64
Konwertuje czas UTC reprezentowany przez struct tm
czas UTC na czas UTC reprezentowany przez time_t
typ.
Składnia
time_t _mkgmtime(
struct tm* timeptr
);
__time32_t _mkgmtime32(
struct tm* timeptr
);
__time64_t _mkgmtime64(
struct tm* timeptr
);
Parametry
timeptr
Wskaźnik do godziny UTC w struct tm
celu przekonwertowania.
Wartość zwracana
Ilość typu __time32_t
lub __time64_t
reprezentująca liczbę sekund, które upłynęły od północy, 1 stycznia 1970 r., w uniwersalnym czasie koordynowanym (UTC). Jeśli data jest poza zakresem (zobacz sekcję Uwagi) lub dane wejściowe nie mogą być interpretowane jako prawidłowy czas, zwracana wartość to -1.
Uwagi
Funkcje _mkgmtime32
i _mkgmtime64
konwertują czas UTC na __time32_t
typ lub __time64_t
reprezentujący czas w formacie UTC. Aby przekonwertować czas lokalny na czas UTC, użyj wartości mktime
, _mktime32
i _mktime64
zamiast tego.
_mkgmtime
jest funkcją śródliniową, która oblicza wartość _mkgmtime64
, i time_t
jest równoważna funkcji __time64_t
. Jeśli musisz wymusić, aby kompilator interpretował time_t
jako stary 32-bitowy time_t
element , możesz zdefiniować element _USE_32BIT_TIME_T
. Nie zalecamy jej, ponieważ aplikacja może zakończyć się niepowodzeniem po 18 stycznia 2038 r., maksymalny zakres 32-bitowego time_t
zakresu. W ogóle nie jest to dozwolone na platformach 64-bitowych.
Struktura czasu przekazywana w pliku jest zmieniana w następujący sposób, tak jak zmieniana przez _mktime
funkcje: tm_wday
pola i tm_yday
są ustawiane na nowe wartości na podstawie wartości tm_mday
i tm_year
. Ponieważ zakłada się, że czas UTC, tm_isdst
pole jest ignorowane.
Zakres _mkgmtime32
funkcji to od północy, 1 stycznia 1970, UTC do 23:59:59 stycznia 18, 2038, UTC. Zakres _mkgmtime64
to od północy, 1 stycznia 1970, UTC do 23:59:59, 31 grudnia 3000, UTC. Data poza zakresem powoduje zwrócenie wartości -1. Zakres _mkgmtime
zależy od tego, czy _USE_32BIT_TIME_T
jest zdefiniowany. Jeśli nie jest ona zdefiniowana, co jest wartością domyślną, zakres jest taki sam jak _mkgmtime64
. W przeciwnym razie zakres jest ograniczony do zakresu 32-bitowego ._mkgmtime32
Zarówno gmtime
, jak i localtime
używają wspólnego buforu statycznego do konwersji. Jeśli podasz ten bufor do _mkgmtime
, poprzednia zawartość zostanie zniszczona.
Przykłady
// 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
W poniższym przykładzie pokazano, jak niekompletna struktura jest wypełniana przez _mkgmtime
element . Oblicza wartości zarówno dla dnia tygodnia, jak i 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 );
}
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ż
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