Udostępnij za pośrednictwem


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_tsourceTime 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. TZjest 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_telement , możesz zdefiniować _USE_32BIT_TIME_Telement , co powoduje localtime_s ocenę elementu ._localtime32_s Nie zalecamy , _USE_32BIT_TIME_Tponieważ 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