Sdílet prostřednictvím


localtime_s, _localtime32_s, _localtime64_s

Převede hodnotu času a opraví pro místní časové pásmo.Tyto verze jsou localtime, _localtime32, _localtime64 s vylepšení zabezpečení popsaným v Funkce zabezpečení v 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
    Ukazatel na strukturu čas být vyplněno.

  • time
    Ukazatel času uložené.

Vrácená hodnota

Nula, pokud je úspěšná.Vrácená hodnota je kód chyby, pokud nedošlo k selhání.Kódy chyb jsou definovány v Errno.h.Seznam těchto chyb naleznete v kód chyby.

Chybové podmínky

_tm

time

Vrácená hodnota

Hodnota v_tm

Vyvolá obsluhu neplatný parametr

NULL

žádné

EINVAL

Nezměněno

Ano

Není NULL (odkazuje na platný paměti)

NULL

EINVAL

Všechna pole nastavena na hodnotu -1

Ano

Není NULL (odkazuje na platný paměti)

menší než nula nebo větší než_MAX__TIME64_T

EINVAL

Všechna pole nastavena na hodnotu -1

Ne

Z první dvě chybové podmínky, je vyvolána neplatný parametr popisovače, jak je popsáno v Ověření parametrů.Pokud je povoleno spuštění pokračovat, nastavit tyto funkce errno na EINVAL a vrátit se EINVAL.

Poznámky

_localtime32_s Funkce převede čas uloženy jako time_t hodnotu a výsledek uloží do struktury typu tm.long Hodnotu timer představuje počet sekund uplynulých od půlnoci (00: 00), 1. ledna 1970, UTC.Tato hodnota je obvykle získán z time funkce.

_localtime32_sPokud uživatel nejprve nastaví proměnnou prostředí globální opraví pro místní časové pásmo TZ.Při TZ je nastavena tři jiné proměnné prostředí (_timezone, _daylight, a _tzname) jsou automaticky nastaveny také.Pokud TZ není nastavena proměnná, localtime32_s se pokusí použít časové pásmo informace uvedené v žádosti datum a čas v okně Ovládací panely.Pokud nelze získat tyto informace, PST8PDT, která znamená tichomořského je ve výchozím nastavení.Viz _tzset popis těchto proměnných.TZrozšíření Microsoft a není součástí standardní definice ANSI localtime.

[!POZNÁMKA]

Cílové prostředí se pokuste zjistit, zda je v platnosti letní čas.

_localtime64_s, která používá __time64_t struktury, že umožňuje data vyjádřeno až 23: 59: 59, do 31. prosince 3000 koordinovaný světový čas (UTC), _localtime32_s představuje data prostřednictvím 03: 14: 07 19 01.01.08, UTC.

localtime_svložené funkce, jehož výsledkem je _localtime64_s, a time_t je ekvivalentní __time64_t.Chcete-li vynutit kompilátor interpretace time_t jako staré 32-bit time_t, můžete definovat _USE_32BIT_TIME_T.Tím dojde k localtime_s k vyhodnocení _localtime32_s.Nedoporučuje se, protože aplikace může selhat po 19 01.01.08, a není povoleno na 64bitových platformách.

Pole Typ struktury tm uložit následující hodnoty, které int.

  • tm_sec
    Sekund po minuta (0-59).

  • tm_min
    Minut po hodině (0-59).

  • tm_hour
    Hodiny po půlnoci (0-23).

  • tm_mday
    Den v měsíci (1-31).

  • tm_mon
    Měsíc (0 – 11; Ledna = 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; Ledna = 0).

  • tm_isdst
    Kladná hodnota, pokud letní čas je v platnosti; 0, pokud není letního času v účinku; Záporná hodnota, pokud Neznámý stav letního času.Pokud TZ je nastavena proměnná prostředí, C Runtime library předpokládá pravidla USA vhodné pro provádění výpočtu letní čas (DST).

Požadavky

Rutina

Požadované záhlaví

localtime_s

<time.h>

_localtime32_s

<time.h>

_localtime64_s

<time.h>

Další informace o kompatibilitě v tématu Compatibility v úvodu.

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

Vzorový výstup

Fri Apr 25 01:19:27 PM

Ekvivalent v rozhraní .NET Framework

System::datetime::ToLocalTime

Viz také

Referenční dokumentace

Aplikace 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