Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Konwertuje wartość czasu na tm strukturę. Te funkcje to wersje programu _gmtime64z ulepszeniami zabezpieczeń zgodnie z opisem w temacie Funkcje zabezpieczeń w narzędziu CRT.
Składnia
errno_t gmtime_s( // See note in remarks section about linkage
struct tm* tmDest,
const __time_t* sourceTime
);
errno_t _gmtime32_s(
struct tm* tmDest,
const __time32_t* sourceTime
);
errno_t _gmtime64_s(
struct tm* tmDest,
const __time64_t* sourceTime
);
Parametry
tmDest
Wskaźnik do tm struktury. Pola zwracanej struktury przechowują obliczoną wartość argumentu timer w formacie UTC, a nie w czasie lokalnym.
sourceTime
Wskaźnik do przechowywanego czasu. Czas jest reprezentowany jako czas, który upłynął od północy (00:00:00), 1 stycznia 1970 r., skoordynowany uniwersalny czas (UTC).
Wartość zwracana
Zero, jeśli się powiedzie. Wartość zwracana jest kodem błędu, jeśli wystąpi błąd. Kody błędów są zdefiniowane w pliku Errno.h; aby uzyskać listę tych błędów, zobacz errno.
Warunki błędu
tmDest |
sourceTime |
Zwrot | Wartość w tmDest |
|---|---|---|---|
NULL |
dowolny | EINVAL |
Niezmodyfikowane. |
Nie NULL (wskazuje prawidłową pamięć) |
NULL |
EINVAL |
Wszystkie pola ustawione na -1. |
Nie NULL |
< 0 | EINVAL |
Wszystkie pola ustawione na -1. |
Dwa pierwsze warunki błędu wywołują nieprawidłową procedurę obsługi parametrów, zgodnie z opisem w temacie Weryfikacja parametrów. Jeśli wykonywanie jest dozwolone do kontynuowania, te funkcje są ustawione errno na EINVAL i zwracają wartość EINVAL.
Uwagi
Funkcja _gmtime32_s dzieli sourceTime wartość i przechowuje ją w strukturze typu tm, zdefiniowanej w pliku Time.h. Adres struktury jest przekazywany w pliku tmDest. Wartość sourceTime elementu jest często uzyskiwana z wywołania time funkcji.
Każde z pól struktury ma typ int, jak pokazano w poniższej tabeli.
| Pole | opis |
|---|---|
tm_sec |
Sekundy po minucie (0–59). |
tm_min |
Minuty po godzinie (0–59). |
tm_hour |
Godziny od północy (od 0 do 23). |
tm_mday |
Dzień miesiąca (od 1 do 31). |
tm_mon |
Miesiąc (0– 11; Styczeń = 0). |
tm_year |
Rok (bieżący rok minus 1900). |
tm_wday |
Dzień tygodnia (od 0 do 6; Niedziela = 0). |
tm_yday |
Dzień roku (od 0 do 365; 1 stycznia = 0). |
tm_isdst |
Zawsze 0 dla gmtime_s. |
_gmtime64_s, który używa __time64_t struktury, umożliwia wyrażenia dat do 23:59:59, 31 grudnia 3000, UTC; natomiast gmtime32_s reprezentują tylko daty do 23:59:59 stycznia 18, 2038, UTC. Północ, 1 stycznia 1970 r., jest dolną granicą zakresu dat dla obu tych funkcji.
gmtime_s jest funkcją śródliniową, która oblicza wartość _gmtime64_s i time_t jest równoważna funkcji __time64_t. Jeśli musisz wymusić, aby kompilator interpretował time_t jako stary 32-bitowy time_telement , możesz zdefiniować element _USE_32BIT_TIME_T.
_USE_32BIT_TIME_T powoduje gmtime_s podkreślenie jako _gmtime32_s. Nie zalecamy , _USE_32BIT_TIME_Tponieważ aplikacja może zakończyć się niepowodzeniem po 18 stycznia 2038 r. i ponieważ nie jest dozwolona na platformach 64-bitowych.
Domyślnie stan globalny tej funkcji jest zakresem aplikacji. Aby zmienić to zachowanie, zobacz Stan globalny w CRT.
Uwaga / Notatka
W przypadku korzystania z zestawu Windows SDK w wersji 10.0.26100.6901 i Visual Studio 2026 lub nowszej gmtime_s nie jest już static inline (połączenie wewnętrzne). Zamiast tego jest inline to (połączenie zewnętrzne).
Aby powrócić do poprzedniego zachowania, #define _STATIC_INLINE_UCRT_FUNCTIONS=1 przed dołączeniem dowolnych nagłówków CRT. Domyślnie _STATIC_INLINE_UCRT_FUNCTIONS jest ustawiona wartość 0.
Ta zmiana zwiększa zgodność UCRT ze standardem C++ i poprawia zgodność z modułami języka C++.
Wymagania
| Procedura | Wymagany nagłówek języka C | Wymagany nagłówek języka C++ |
|---|---|---|
gmtime_s, , _gmtime32_s_gmtime64_s |
<time.h> |
<ctime> lub <time.h> |
Aby uzyskać więcej informacji o zgodności, zobacz Zgodność.
Przykład
// crt_gmtime64_s.c
// This program uses _gmtime64_s to convert a 64-bit
// integer representation of coordinated universal time
// to a structure named newtime, then uses asctime_s to
// convert this structure to an output string.
#include <time.h>
#include <stdio.h>
int main( void )
{
struct tm newtime;
__int64 ltime;
char buf[26];
errno_t err;
_time64( <ime );
// Obtain coordinated universal time:
err = _gmtime64_s( &newtime, <ime );
if (err)
{
printf("Invalid Argument to _gmtime64_s.");
}
// Convert to an ASCII representation
err = asctime_s(buf, 26, &newtime);
if (err)
{
printf("Invalid Argument to asctime_s.");
}
printf( "Coordinated universal time is %s\n",
buf );
}
Coordinated universal time is Fri Apr 25 20:12:33 2003
Zobacz też
Zarządzanie czasem
asctime_s, _wasctime_s
ctime, , _ctime32, _ctime64, _wctime, , _wctime32_wctime64
_ftime, , _ftime32_ftime64
gmtime, , _gmtime32_gmtime64
localtime_s, , _localtime32_s_localtime64_s
_mkgmtime, , _mkgmtime32_mkgmtime64
mktime, , _mktime32_mktime64
time, , _time32_time64