localtime_s
, , _localtime32_s
_localtime64_s
Konwertuje time_t
wartość czasu na tm
strukturę i poprawia dla lokalnej strefy czasowej. Te funkcje to wersje programu localtime
, _localtime64
_localtime32
z ulepszeniami zabezpieczeń zgodnie z opisem w temacie Funkcje zabezpieczeń w narzędziu CRT.
Składnia
errno_t localtime_s(
struct tm* const tmDest,
time_t const* const sourceTime
);
errno_t _localtime32_s(
struct tm* tmDest,
__time32_t const* sourceTime
);
errno_t _localtime64_s(
struct tm* tmDest,
__time64_t const* sourceTime
);
Parametry
tmDest
Wskaźnik do wypełnienia struktury czasu.
sourceTime
Wskaźnik do przechowywanego czasu.
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 |
Wartość zwracana | Wartość w tmDest |
Wywołuje nieprawidłową procedurę obsługi parametrów |
---|---|---|---|---|
NULL |
dowolny | EINVAL |
Nie zmodyfikowano | Tak |
Nie NULL (wskazuje prawidłową pamięć) |
NULL |
EINVAL |
Wszystkie pola ustawione na -1 | Tak |
Nie NULL (wskazuje prawidłową pamięć) |
mniejsze niż 0 lub większe niż _MAX__TIME64_T |
EINVAL |
Wszystkie pola ustawione na -1 | Nie. |
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 localtime_s
konwertuje czas przechowywany jako time_t
wartość i przechowuje wynik w strukturze typu tm
. Wartość time_t
sourceTime
reprezentuje sekundy, które upłynęły od północy (00:00:00), 1 stycznia 1970 r. UTC. Ta wartość jest często uzyskiwana z time
funkcji .
localtime_s
poprawia dla lokalnej strefy czasowej, jeśli użytkownik najpierw ustawia globalną zmienną środowiskową TZ
. Po TZ
ustawieniu trzy inne zmienne środowiskowe (_timezone
, _daylight
, i _tzname
) również są ustawiane automatycznie. Jeśli zmienna TZ
nie jest ustawiona, localtime_s
próbuje użyć informacji o strefie czasowej określonej w aplikacji data/godzina w Panel sterowania. Jeśli nie można uzyskać tych informacji, PST8PDT, która oznacza strefę czasową Pacyfiku, jest używana domyślnie. Zobacz _tzset
opis tych zmiennych. TZ
jest rozszerzeniem firmy Microsoft, a nie częścią standardowej definicji anSI .localtime
Uwaga
Środowisko docelowe powinno spróbować określić, czy czas letni jest w mocy.
_localtime64_s
, który używa __time64_t
struktury, umożliwia wyrażenie dat do 23:59:59, 18 stycznia 3001, skoordynowany uniwersalny czas (UTC), podczas gdy _localtime32_s
reprezentuje daty do 23:59:59 stycznia 18, 2038, UTC.
localtime_s
jest funkcją śródliniową, która oblicza wartość _localtime64_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_t
element , możesz zdefiniować _USE_32BIT_TIME_T
element , co powoduje localtime_s
ocenę elementu ._localtime32_s
Nie zalecamy , _USE_32BIT_TIME_T
ponieważ aplikacja może zakończyć się niepowodzeniem po 18 stycznia 2038 r. i nie jest dozwolona na platformach 64-bitowych.
Pola typu tm
struktury przechowują następujące wartości, z których każda jest wartością int
.
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 |
Wartość dodatnia, jeśli czas letni jest w mocy; 0, jeśli czas letni nie jest w mocy; wartość ujemna, jeśli stan czasu letniego jest nieznany. |
Jeśli zmienna TZ
środowiskowa jest ustawiona, biblioteka czasu wykonywania języka C zakłada reguły właściwe dla Stany Zjednoczone do implementowania obliczania czasu letniego (DST).
Domyślnie stan globalny tej funkcji jest zakresem aplikacji. Aby zmienić to zachowanie, zobacz Stan globalny w CRT.
Wymagania
Procedura | Wymagany nagłówek języka C | Wymagany nagłówek języka C++ |
---|---|---|
localtime_s , , _localtime32_s _localtime64_s |
<time.h> |
<ctime> lub <time.h> |
Aby uzyskać więcej informacji o zgodności, zobacz Zgodność.
Przykład
// crt_localtime_s.c
// This program uses _time64 to get the current time
// and then uses _localtime64_s() to convert this time to a structure
// representing the local time. The program converts the result
// from a 24-hour clock to a 12-hour clock and determines the
// proper extension (AM or PM).
#include <stdio.h>
#include <string.h>
#include <time.h>
int main( void )
{
struct tm newtime;
char am_pm[] = "AM";
__time64_t long_time;
char timebuf[26];
errno_t err;
// Get time as 64-bit integer.
_time64( &long_time );
// Convert to local time.
err = _localtime64_s( &newtime, &long_time );
if (err)
{
printf("Invalid argument to _localtime64_s.");
exit(1);
}
if( newtime.tm_hour > 12 ) // Set up extension.
strcpy_s( am_pm, sizeof(am_pm), "PM" );
if( newtime.tm_hour > 12 ) // Convert from 24-hour
newtime.tm_hour -= 12; // to 12-hour clock.
if( newtime.tm_hour == 0 ) // Set hour to 12 if midnight.
newtime.tm_hour = 12;
// Convert to an ASCII representation.
err = asctime_s(timebuf, 26, &newtime);
if (err)
{
printf("Invalid argument to asctime_s.");
exit(1);
}
printf( "%.19s %s\n", timebuf, am_pm );
}
Fri Apr 25 01:19:27 PM
Zobacz też
Zarządzanie czasem
asctime_s
, _wasctime_s
ctime
, , _ctime32
, _ctime64
, _wctime
, , _wctime32
_wctime64
_ftime
, , _ftime32
_ftime64
gmtime_s
, , _gmtime32_s
_gmtime64_s
localtime
, , _localtime32
_localtime64
time
, , _time32
_time64
_tzset