Sdílet prostřednictvím


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 a time32_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, mktimemkgmtimea 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 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 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 localtimeANSI .

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