Sdílet prostřednictvím


localtime_s, _localtime32_s, _localtime64_s

Převede časovou time_t hodnotu na tm strukturu a opraví ji pro místní časové pásmo. Tyto funkce jsou verze localtime, _localtime32_localtime64s vylepšeními zabezpečení, jak je popsáno v funkcích zabezpečení v CRT.

Syntaxe

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
Ukazatel na strukturu času, do které se má vyplnit.

sourceTime
Ukazatel na uložený čas.

Vrácená hodnota

Nula v případě úspěchu. Vrácená hodnota je kód chyby, pokud dojde k selhání. Kódy chyb jsou definovány v .Errno.h Seznam těchto chyb najdete v tématu errno.

Chybové podmínky

tmDest sourceTime Vrácená hodnota Hodnota v tmDest Vyvolá neplatnou obslužnou rutinu parametru.
NULL jakékoliv EINVAL Neupraveno Ano
Not NULL (odkazuje na platnou paměť) NULL EINVAL Všechna pole nastavená na -1 Ano
Not NULL (odkazuje na platnou paměť) menší než 0 nebo větší než _MAX__TIME64_T EINVAL Všechna pole nastavená na -1 Číslo

První dvě chybové podmínky vyvolávají neplatnou obslužnou rutinu parametru, jak je popsáno v ověření parametru. Pokud provádění může pokračovat, tyto funkce jsou nastaveny errno na EINVAL a vracet EINVAL.

Poznámky

Funkce localtime_s převede čas uložený jako time_t hodnotu a uloží výsledek do struktury typu tm. Hodnota time_tsourceTime představuje sekundy uplynulé od půlnoci (00:00:00), 1. ledna 1970, UTC. Tato hodnota se často získává z time funkce.

localtime_s opraví místní časové pásmo, pokud uživatel poprvé nastaví globální proměnnou TZprostředí . Při TZ nastavení se automaticky nastaví i tři další proměnné prostředí (_timezone, _daylighta _tzname) . TZ Pokud proměnná není nastavená, localtime_s pokusí se použít informace o časovém pásmu zadané v aplikaci Datum a čas v Ovládací panely. Pokud tyto informace nelze získat, PST8PDT, což označuje časové pásmo Tichomoří, se ve výchozím nastavení používá. Popis _tzset těchto proměnných najdete v tématu. TZ je rozšíření Společnosti Microsoft, které není součástí standardní definice localtimeANSI .

Poznámka

Cílové prostředí by se mělo pokusit zjistit, jestli je aktivní letní čas.

_localtime64_s, který používá __time64_t strukturu, umožňuje vyjádřit data do 23:59:59, 18. ledna 3001, koordinovaný univerzální čas (UTC), zatímco _localtime32_s představuje data do 23:59:59 18, 2038 UTC.

localtime_s je vložená funkce, která je vyhodnocena jako _localtime64_s, a time_t je ekvivalentní __time64_t. Pokud potřebujete vynutit, aby kompilátor interpretoval time_t jako starý 32bitový time_t, můžete definovat _USE_32BIT_TIME_T, což způsobí localtime_s vyhodnocení _localtime32_s. Nedoporučujeme _USE_32BIT_TIME_T, protože vaše aplikace může selhat po 18. lednu 2038 a není povolená na 64bitových platformách.

Pole typu tm struktury ukládají následující hodnoty, z nichž každý je .int

Pole popis
tm_sec Sekundy po minutě (0 – 59).
tm_min Minuty po hodině (0 – 59).
tm_hour Hodiny od půlnoci (0 - 23).
tm_mday Den v měsíci (1 – 31).
tm_mon Měsíc (0 – 11; Leden = 0).
tm_year Rok (aktuální rok minus 1900).
tm_wday Den v týdnu (0 - 6; Neděle = 0).
tm_yday Den roku (0 – 365; 1. ledna = 0).
tm_isdst Kladná hodnota v případě, že letní čas je v platnosti; 0, pokud letní čas není v platnosti; záporná hodnota, pokud je stav letního času neznámý.

TZ Pokud je proměnná prostředí nastavená, knihovna runtime jazyka C předpokládá pravidla odpovídající USA pro implementaci výpočtu letního času (DST).

Ve výchozím nastavení je globální stav této funkce vymezen na aplikaci. Chcete-li toto chování změnit, přečtěte si téma Globální stav v CRT.

Požadavky

Rutina Požadovaná hlavička jazyka C Požadovaná hlavička C++
localtime_s, _localtime32_s, _localtime64_s <time.h> <ctime> nebo <time.h>

Další informace o kompatibilitě najdete v tématu Kompatibilita.

Příklad

// 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

Viz také

Správa času
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