_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" |
0 | 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 NULL
nula 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í errno
EINVAL
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 | žádný | 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
, mktime
localtime
a 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_errlist
a _sys_nerr
_get_daylight
_get_dstbias
_get_timezone