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
_localtime64
s 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 | No |
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_t
sourceTime
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 TZ
prostředí . Při TZ
nastavení se automaticky nastaví i tři další proměnné prostředí (_timezone
, _daylight
a _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 localtime
ANSI .
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