localtime
, , _localtime32
_localtime64
Převede časovou hodnotu a opraví místní časové pásmo. K dispozici jsou bezpečnější verze těchto funkcí; viz localtime_s
, _localtime32_s
, _localtime64_s
.
Syntaxe
struct tm *localtime( const time_t *sourceTime );
struct tm *_localtime32( const __time32_t *sourceTime );
struct tm *_localtime64( const __time64_t *sourceTime );
Parametry
sourceTime
Ukazatel na uložený čas.
Vrácená hodnota
Vrátí ukazatel na výsledek struktury nebo NULL
pokud je datum předané funkci:
Před půlnocí, 1. ledna 1970.
Po 03:14:07, 19. ledna 2038, UTC (using
_time32
atime32_t
).Po 23:59:59, 31. prosince 3000, UTC (using
_time64
a__time64_t
).
_localtime64
, který používá __time64_t
strukturu, umožňuje vyjádřit data do 23:59:59, 31. prosince 3000, koordinovaný univerzální čas (UTC), zatímco _localtime32
představuje data do 23:59:59 18, 2038 UTC.
localtime
je vložená funkce, která je vyhodnocena jako _localtime64
, 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
. _USE_32BIT_TIME_T
způsobí localtime
, že se vyhodnotí jako _localtime32
. 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).
Poznámky
Funkce localtime
převede čas uložený jako time_t
hodnotu a uloží výsledek do struktury typu tm
. Hodnota long
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.
32bitové i 64bitové verze gmtime
, mktime
mkgmtime
a localtime
všechny používají jednu tm
strukturu na vlákno pro převod. Každé volání jedné z těchto rutin zničí výsledek předchozího volání.
localtime
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
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 tichomořské časové pásmo, 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.
Tyto funkce ověřují své parametry. Pokud sourceTime
je ukazatel null nebo pokud sourceTime
je hodnota záporná, tyto funkce vyvolat neplatnou obslužnou rutinu parametru, jak je popsáno v ověření parametru. Pokud je spuštění povoleno pokračovat, funkce se vrátí NULL
a nastaví errno
na EINVAL
.
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 , , _localtime32 _localtime64 |
<time.h> |
<ctime> nebo <time.h> |
Další informace o kompatibilitě najdete v tématu Kompatibilita.
Příklad
// crt_localtime.cpp
// compile with: /W3
// This program uses _time64 to get the current time
// and then uses localtime64() 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;
_time64( &long_time ); // Get time as 64-bit integer.
// Convert to local time.
newtime = _localtime64( &long_time ); // C4996
// Note: _localtime64 deprecated; consider _localetime64_s
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;
char buff[30];
asctime_s( buff, sizeof(buff), newtime );
printf( "%.19s %s\n", buff, am_pm );
}
Tue Feb 12 10:05:58 AM
Viz také
Správa času
asctime
, _wasctime
ctime
, _ctime32
, _ctime64
, _wctime
, , _wctime32
_wctime64
_ftime
, , _ftime32
_ftime64
gmtime
, , _gmtime32
_gmtime64
localtime_s
, , _localtime32_s
_localtime64_s
time
, , _time32
_time64
_tzset