Udostępnij za pośrednictwem


_tzset

Ustawia zmienne środowiskowe czasu.

Ważne

Tego interfejsu API nie można używać w aplikacjach wykonywanych w środowisko wykonawcze systemu Windows. Aby uzyskać więcej informacji, zobacz Funkcje CRT nieobsługiwane w aplikacjach platforma uniwersalna systemu Windows.

Składnia

void _tzset( void );

Uwagi

Funkcja _tzset używa bieżącego ustawienia zmiennej TZ środowiskowej do przypisywania wartości do trzech zmiennych globalnych: _daylight, _timezonei _tzname. Te zmienne są używane przez _ftime funkcje i localtime do dokonywania poprawek z uniwersalnego czasu koordynowanego (UTC) do czasu lokalnego time , a także przez funkcję do obliczania czasu UTC od czasu systemowego. Użyj następującej składni, aby ustawić zmienną środowiskową TZ :

set TZ=tzn[+-|]hh[[mm::ss] ][dzn]

tzn
Trzyliterowa nazwa strefy czasowej, taka jak PST. Należy określić poprawne przesunięcie od czasu lokalnego do czasu UTC.

hh
Różnica w godzinach między godzinami UTC i czasem lokalnym. Znak (+) opcjonalny dla wartości dodatnich.

mm
Protokół. Oddzielone dwukropkiem hh (:).

ss
Sekund. Oddzielone dwukropkiem mm (:).

dzn
Trzyliterowa strefa czasowa, taka jak PDT. Jeśli czas letni nigdy nie jest w mocy w lokalizacji, ustaw TZ bez wartości .dzn Biblioteka języka C w czasie wykonywania zakłada reguły Stany Zjednoczone dotyczące implementowania obliczania czasu letniego (DST).

Uwaga

Należy zachować ostrożność podczas obliczania znaku różnicy czasu. Ponieważ różnica czasu jest przesunięciem od czasu lokalnego do CZASU UTC (a nie odwrotnym), jego znak może być przeciwieństwem tego, czego można intuicyjnie oczekiwać. W przypadku stref czasowych przed UTC różnica czasu jest ujemna; dla osób za UTC różnica jest dodatnia.

Aby na przykład ustawić zmienną TZ środowiskową odpowiadającą bieżącej strefie czasowej w Niemczech, wprowadź to polecenie w wierszu polecenia:

set TZ=GST-1GDT

To polecenie używa GST do wskazania niemieckiego czasu standardowego. Przyjęto założenie, że utc jest godziną za Niemcami (lub innymi słowy, że Niemcy są o jedną godzinę przed UTC). Zakłada się również, że Niemcy obserwują czas letni.

TZ Jeśli wartość nie jest ustawiona, _tzset próbuje użyć informacji o strefie czasowej określonej przez system operacyjny. W systemie operacyjnym Windows te informacje są określone w aplikacji data/godzina w Panel sterowania. Jeśli _tzset nie można uzyskać tych informacji, domyślnie używa PST8PDT, co oznacza strefę czasową pacyficznego.

Na podstawie wartości zmiennej TZ środowiskowej następujące wartości są przypisywane do zmiennych globalnych _daylight, _timezonei _tzname , gdy _tzset jest wywoływana:

Zmienna globalna opis Domyślna wartość
_daylight Wartość niezerowa, jeśli w ustawieniu określono TZ strefę czasową oszczędzania światła dziennego; w przeciwnym razie 0. 1
_timezone Różnica w sekundach między czasem lokalnym a utc. 28800 (28 800 sekund jest równe 8 godzin)
_tzname[0] Wartość ciągu nazwy strefy czasowej ze TZ zmiennej środowiskowej; pusta, jeśli TZ nie została ustawiona. PST
_tzname[1] Wartość ciągu strefy czasowej oszczędzania światła dziennego; wartość pusta, jeśli strefa czasowa oszczędzająca czas zostanie pominięta ze TZ zmiennej środowiskowej. PDT

Wartości domyślne pokazane w poprzedniej tabeli i _daylight tablica _tzname odpowiadają wartościom "PST8PDT". Jeśli strefa DST zostanie pominięta ze zmiennej środowiskowej TZ , wartość _daylight to 0, a _ftimefunkcje , gmtimei localtime zwracają wartość 0 dla flag DST.

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

Wymagania

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

Funkcja jest specyficzna _tzset dla firmy Microsoft. Aby uzyskać więcej informacji, zobacz Zgodność.

Przykład

// crt_tzset.cpp
// This program uses _tzset to set the global variables
// named _daylight, _timezone, and _tzname. Since TZ is
// not being explicitly set, it uses the system time.

#include <time.h>
#include <stdlib.h>
#include <stdio.h>

int main( void )
{
    _tzset();
    int daylight;
    _get_daylight( &daylight );
    printf( "_daylight = %d\n", daylight );
    long timezone;
    _get_timezone( &timezone );
    printf( "_timezone = %ld\n", timezone );
    size_t s;
    char tzname[100];
    _get_tzname( &s, tzname, sizeof(tzname), 0 );
    printf( "_tzname[0] = %s\n", tzname );
    exit( 0 );
}
_daylight = 1
_timezone = 28800
_tzname[0] = Pacific Standard Time

Zobacz też

Zarządzanie czasem
asctime, _wasctime
_ftime, , _ftime32_ftime64
gmtime, , _gmtime32_gmtime64
localtime, , _localtime32_localtime64
time, , _time32_time64
_utime, , _utime32, _utime64, _wutime, , _wutime32_wutime64