Udostępnij za pośrednictwem


localtime_s, _localtime32_s, _localtime64_s

Konwertuje wartość czasu i koryguje się dla lokalnej strefy czasowej.Są to wersje strtotime, _localtime32, _localtime64 z rozszerzeń zabezpieczeń opisane w Funkcje zabezpieczeń w CRT.

errno_t localtime_s(
   struct tm* _tm,
   const time_t *time 
);
errno_t _localtime32_s(
   struct tm* _tm,
   const time32_t *time 
);
errno_t _localtime64_s(
   struct tm* _tm,
   const _time64_t *time 
);

Parametry

  • _tm
    Wskaźnik do struktury czasu wypełnione.

  • time
    Wskaźnik, aby czas przechowywane.

Wartość zwracana

Zero, jeśli kończy się pomyślnie.Wartość zwracana jest kod błędu, jeśli wystąpi awaria.Kody błędów są zdefiniowane w errno.Aby uzyskać listę tych błędów, zobacz errno.

Warunki błędów

_tm

time

Zwracanie wartości

Wartość_tm

Wywołuje program obsługi nieprawidłowy parametr

NULL

wszelkie

EINVAL

Nie zmodyfikowano

Tak

Nie NULL (wskazuje prawidłowy pamięci)

NULL

EINVAL

Wszystkie pola ma wartość -1

Tak

Nie NULL (wskazuje prawidłowy pamięci)

mniejsza niż 0 lub większa niż_MAX__TIME64_T

EINVAL

Wszystkie pola ma wartość -1

Nr

W odniesieniu do pierwszego warunki dwóch błąd nieprawidłowy parametr wywoływana jest funkcja obsługi, zgodnie z opisem w Sprawdzanie poprawności parametru.Jeśli wykonanie może kontynuować, ustaw te funkcje errno do EINVAL i zwraca EINVAL.

Uwagi

_localtime32_s Funkcja konwertuje czas przechowywane jako time_t wartość i zapisuje wynik w postaci struktury typu tm.long Wartość timer reprezentuje liczbę sekund, jaka upłynęła od północy (00: 00), 1 stycznia 1970 roku UTC.Wartość ta jest zazwyczaj uzyskiwany z time funkcji.

_localtime32_skoryguje się dla lokalnej strefy czasowej, jeśli użytkownik najpierw ustawia zmienną środowiskową globalnego TZ.Gdy TZ jest ustawiona, trzech innych zmiennych środowiskowych (_timezone, _daylight, i _tzname) są automatycznie ustawiane również.Jeśli TZ zmienna nie jest ustawiona, localtime32_s próbuje użyć informacje o strefie czasowej, określona w aplikacji, Data i godzina w Panelu sterowania.Jeśli nie można uzyskać te informacje, PST8PDT, co oznacza w strefie czasu Pacyfiku, jest używany domyślnie.Zobacz _tzset opis tych zmiennych.TZrozszerzenia Microsoft i nie jest częścią standardowej definicji ANSI z localtime.

[!UWAGA]

Środowiska docelowego należy spróbować ustalić, czy zmiany czasu letniego jest w mocy.

_localtime64_s, który korzysta z __time64_t struktury, pozwala dat wyrażone są do 23: 59: 59, 31 grudnia, 3000, skoordynowanego czasu uniwersalnego (UTC), należy _localtime32_s reprezentuje dat poprzez 03: 14: 07 19 stycznia 2038, UTC.

localtime_sfunkcji śródwierszowej, której wynikiem jest _localtime64_s, i time_t jest równoważne z __time64_t.Jeśli trzeba wymusić na kompilatorze interpretowania time_t jako stary 32-bitowe time_t, można zdefiniować _USE_32BIT_TIME_T.Spowoduje to zaawansowana localtime_s do oceny do _localtime32_s.Nie jest to zalecane, ponieważ aplikacja może zakończyć się niepowodzeniem po 19 stycznia 2038, i nie jest dozwolone na platformach 64-bitowych.

Pól typu Struktura tm przechowywać następujące wartości, z których każdy jest int.

  • tm_sec
    Sekund po minucie (0-59).

  • tm_min
    Minut po godzinie (0-59).

  • tm_hour
    Godziny od północy (0-23).

  • tm_mday
    Dzień miesiąca (1 – 31).

  • tm_mon
    Miesiąc (0 – 11; Stycznia = 0).

  • tm_year
    Rok (bieżącego roku minus 1900).

  • tm_wday
    Dzień tygodnia (0-6; Niedziela = 0).

  • tm_yday
    Dzień roku (0 – 365; 1 Stycznia = 0).

  • tm_isdst
    Wartość dodatnia, jeśli zmiany czasu letniego obowiązujące; 0, jeśli zmiany czasu letniego, nie jest skuteczne; wartość ujemna, jeśli stan czasu letniego jest nieznany.Jeśli TZ zmienna środowiskowa jest ustawiona, biblioteka uruchomieniowa c przyjmie zasady właściwe do Stanów Zjednoczonych wykonywania obliczania czasu letniego (DST).

Wymagania

Rozpoczęto wykonywanie procedury

Wymaganego nagłówka

localtime_s

<time.h>

_localtime32_s

<time.h>

_localtime64_s

<time.h>

Informacji dotyczących zgodności, zobacz zgodności we wprowadzeniu.

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

Przykładowe dane wyjściowe

Fri Apr 25 01:19:27 PM

Odpowiednik w programie .NET Framework

System::DateTime::ToLocalTime

Zobacz też

Informacje

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