Sdílet prostřednictvím


_get_tzname

Načte řetězcovou reprezentaci znaku názvu časového pásma nebo názvu zóny DST (Daylight Standard Time).

Syntaxe

errno_t _get_tzname(
    size_t* pReturnValue,
    char* timeZoneName,
    size_t sizeInBytes,
    int index
);

Parametry

pReturnValue
Délka timeZoneName řetězce zahrnující NULL ukončovací znak.

timeZoneName
Adresa znakového řetězce pro reprezentaci názvu časového pásma nebo názvu letního standardního časového pásma (DST) v závislosti na index.

sizeInBytes
Velikost znakového timeZoneName řetězce v bajtech.

index
Jeden index ze dvou názvů časových pásem, které se mají načíst.

index Obsah timeZoneName timeZoneName výchozí hodnota
0 Název časového pásma "PST"
1 Název denního standardního časového pásma "PDT"
> 1 nebo < 0 errno nastavit na EINVAL neupraveno

Pokud se explicitně neaktualizuje během běhu, "PST" vrátí se pro standardní časové pásmo a "PDT" pro časové pásmo denního světla. Další informace najdete v poznámkách.

Řetězec časového pásma není zaručen stejný mezi verzemi operačního systému. Oficiální názvy časových pásem se můžou měnit.

Vrácená hodnota

Nula v případě úspěchu, jinak errno hodnota typu.

Pokud je nebo timeZoneName je NULLnula nebo sizeInBytes je menší než nula (ale ne obojí), vyvolá se neplatná obslužná rutina parametru, jak je popsáno v ověření parametru. Pokud je spuštění povoleno pokračovat, tato funkce nastaví errnoEINVAL a vrátí EINVAL.

Chybové podmínky

pReturnValue timeZoneName sizeInBytes index Vrácená hodnota Obsah timeZoneName
velikost názvu TZ NULL 0 0 nebo 1 0 neupraveno
velikost názvu TZ jakékoliv > 0 0 nebo 1 0 Název TZ
neupraveno NULL > 0 jakékoliv EINVAL neupraveno
neupraveno jakékoliv nula jakékoliv EINVAL neupraveno
neupraveno jakékoliv > 0 > 1 EINVAL neupraveno

Poznámky

Funkce _get_tzname načte znakovou řetězcovou reprezentaci aktuálního názvu časového pásma nebo názvu letního standardního časového pásma (DST) do adresy timeZoneName v závislosti na index hodnotě spolu s velikostí řetězce v pReturnValue. Pokud timeZoneName je a sizeInBytes je NULL nula, je velikost řetězce v bajtech potřebná k uložení jak zadaného časového pásma, tak ukončení NULL, vrácena v pReturnValue.

Hodnoty index musí být buď 0 pro standardní časové pásmo, nebo 1 pro letní časové pásmo; všechny ostatní hodnoty mají nedeterminované výsledky.

Ve výchozím nastavení "PST" se vrátí pro standardní časové pásmo a "PDT" pro denní standardní časové pásmo. Název časového pásma true se aktualizuje při prvním potřebě funkcí, která vyžaduje informace o časovém pásmu, například strftime, , ftime, ftime_s, mktimelocaltimea další. Pokud funkce, která nevyžaduje informace o časovém pásmu, není volána před voláním _get_tzname, vrátí se výchozí hodnoty, pokud je nejprve explicitně neaktualizujete pomocí některé z uvedených funkcí nebo voláním tzset. TZ Pokud je proměnná prostředí nastavená, má přednost před názvem časového pásma hlášeným operačním systémem. I v tomto případě musí být jedna z výše uvedených funkcí volána před _get_tzname zavolání nebo bude vrácena výchozí hodnota časového pásma. Další informace o TZ proměnné prostředí a CRT naleznete v tématu _tzset.

Upozorňující

Řetězec časového pásma není zaručen stejný mezi verzemi operačního systému. Oficiální názvy časových pásem se můžou měnit.

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.

Příklad

Tato ukázková volání _get_tzname pro získání požadované velikosti vyrovnávací paměti pro zobrazení aktuálního názvu standardního časového pásma Daylight, přidělí vyrovnávací paměť této velikosti, zavolá _get_tzname znovu pro načtení názvu do vyrovnávací paměti a vytiskne ho do konzoly.

Volá také _tzset() , aby operační systém před voláním _get_tzname()aktualizoval informace o časovém pásmu . V opačném případě se použijí výchozí hodnoty.

// crt_get_tzname.c
// Compile by using: cl /W4 crt_get_tzname.c
#include <stdio.h>
#include <time.h>
#include <malloc.h>

enum TZindex {
    STD,
    DST
};

int main()
{
    size_t tznameSize = 0;
    char * tznameBuffer = NULL;

    _tzset(); // Update the time zone information

    // Get the size of buffer required to hold DST time zone name
    if (_get_tzname(&tznameSize, NULL, 0, DST))
    {
        return 1;    // Return an error value if it failed
    }

    // Allocate a buffer for the name
    if (NULL == (tznameBuffer = (char *)(malloc(tznameSize))))
    {
        return 2;    // Return an error value if it failed
    }

    // Load the name in the buffer
    if (_get_tzname(&tznameSize, tznameBuffer, tznameSize, DST))
    {
        return 3;    // Return an error value if it failed
    }

    printf_s("The current Daylight standard time zone name is %s.\n", tznameBuffer);
    return 0;
}

Výstup

The current Daylight standard time zone name is Pacific Daylight Time.

Požadavky

Rutina Požadovaný hlavičkový soubor
_get_tzname <time.h>

Další informace naleznete v tématu Kompatibilita.

Viz také

Správa času
errno, _doserrno, _sys_errlista _sys_nerr
_get_daylight
_get_dstbias
_get_timezone