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
Viz také
Referenční dokumentace
ctime, _ctime32, _ctime64, _wctime, _wctime32, _wctime64
gmtime_s, _gmtime32_s, _gmtime64_s