_get_tzname

Pobiera ciąg znaków reprezentujący nazwę strefy czasowej lub nazwę strefy czasowej (DST).

Składnia

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

Parametry

pReturnValue
Długość ciągu obejmująca timeZoneNameNULL terminator.

timeZoneName
Adres ciągu znaków dla reprezentacji nazwy strefy czasowej lub nazwy strefy czasowej (DST), w zależności od index.

sizeInBytes
Rozmiar timeZoneName ciągu znaków w bajtach.

index
Jedna index z dwóch nazw stref czasowych do pobrania.

index Zawartość timeZoneName timeZoneName wartość domyślna
0 Nazwa strefy czasowej "PST"
1 Nazwa strefy czasowej (czas letni) "PDT"
> 1 lub < 0 errno ustaw wartość na EINVAL niezmodyfikowane

O ile nie zostanie jawnie zaktualizowana podczas wykonywania, "PST" zostanie zwrócona dla standardowej strefy czasowej i "PDT" strefy czasowej (standardowa). Aby uzyskać więcej informacji, zobacz uwagi.

Ciąg strefy czasowej nie ma gwarancji, że jest taki sam między wersjami systemu operacyjnego. Oficjalne nazwy stref czasowych mogą i mogą ulec zmianie.

Wartość zwracana

Zero w przypadku powodzenia errno , w przeciwnym razie wartość typu.

Jeśli wartość timeZoneName to NULL, lub sizeInBytes jest równa zero lub jest mniejsza niż zero (ale nie obie), wywoływana jest nieprawidłowa procedura obsługi parametrów, zgodnie z opisem w temacie Weryfikacja parametrów. Jeśli wykonywanie jest dozwolone do kontynuowania, ta funkcja ustawia errno wartość EINVAL i zwraca wartość EINVAL.

Warunki błędu

pReturnValue timeZoneName sizeInBytes index Wartość zwracana Zawartość timeZoneName
rozmiar nazwy TZ NULL 0 0 lub 1 0 niezmodyfikowane
rozmiar nazwy TZ dowolny > 0 0 lub 1 0 Nazwatz
niezmodyfikowane NULL > 0 dowolny EINVAL niezmodyfikowane
niezmodyfikowane dowolny zero dowolny EINVAL niezmodyfikowane
niezmodyfikowane dowolny > 0 > 1 EINVAL niezmodyfikowane

Uwagi

Funkcja _get_tzname pobiera ciąg znaków reprezentujący bieżącą nazwę strefy czasowej lub nazwę strefy czasowej (DST) w adresie timeZoneName w zależności od index wartości wraz z rozmiarem ciągu w pReturnValue. Jeśli timeZoneName wartość jest NULL równa zerosizeInBytes, rozmiar ciągu w bajtach wymaganych do przechowywania zarówno określonej strefy czasowej, jak i zakończenia NULL, jest zwracany w .pReturnValue

Wartości index muszą być równe 0 dla standardowej strefy czasowej lub 1 dla strefy czasowej (czas standardowy) — wszystkie inne wartości mają nieokreślone wyniki.

Domyślnie "PST" jest zwracana dla standardowej strefy czasowej i "PDT" strefy czasowej (czas letni). Prawdziwa nazwa strefy czasowej jest aktualizowana po raz pierwszy przez funkcję, która wymaga informacji o strefie czasowej, takich jak strftime, ftime, ftime_smktime, , localtimei innych. Jeśli funkcja, która nie wymaga informacji o strefie czasowej, nie jest wywoływana przed wywołaniem _get_tzname, zwracane są wartości domyślne, chyba że najpierw jawnie zaktualizujesz je przy użyciu jednej z wymienionych funkcji lub przez wywołanie metody tzset. Ponadto jeśli zmienna TZ środowiskowa jest ustawiona, ma pierwszeństwo przed nazwą strefy czasowej zgłaszanej przez system operacyjny. Nawet w takim przypadku należy wywołać jedną z funkcji wymienionych powyżej przed _get_tzname wywołaniami lub zostanie zwrócona domyślna wartość strefy czasowej. Aby uzyskać więcej informacji na temat zmiennej środowiskowej TZ i CRT, zobacz _tzset.

Ostrzeżenie

Ciąg strefy czasowej nie ma gwarancji, że jest taki sam między wersjami systemu operacyjnego. Oficjalne nazwy stref czasowych mogą i mogą ulec zmianie.

Domyślnie stan globalny tej funkcji jest zakresem aplikacji. Aby zmienić to zachowanie, zobacz Stan globalny w CRT.

Przykład

To przykładowe wywołania _get_tzname umożliwiające pobranie wymaganego rozmiaru buforu w celu wyświetlenia bieżącej standardowej nazwy strefy czasowej (czas letni), przydziela bufor tego rozmiaru, wywołuje _get_tzname ponownie nazwę w buforze i drukuje ją do konsoli.

Wywołuje również polecenie _tzset() , aby system operacyjny zaktualizował informacje o strefie czasowej przed wywołaniem metody _get_tzname(). W przeciwnym razie są używane wartości domyślne.

// 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;
}

Dane wyjściowe

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

Wymagania

Procedura Wymagany nagłówek
_get_tzname <time.h>

Aby uzyskać więcej informacji, zobacz Zgodność.

Zobacz też

Zarządzanie czasem
errno, _doserrno, _sys_errlisti _sys_nerr
_get_daylight
_get_dstbias
_get_timezone