Możesz ustawić strefę czasową na czas trwania zapytania, a zatem:
TZ=America/New_York date
Zwróć uwagę na spację między TZ
ustawieniem a date
poleceniem. W rc
powłoce podobnej do Bourne'a i podobnej ustawia TZ
zmienną tylko dla wiersza poleceń. W innych powłok ( csh
, tcsh
, fish
), zawsze można użyć env
zamiast polecenia:
env TZ=America/New_York date
tl; dr
W systemach Linux. strefy czasowe są zdefiniowane w plikach w /usr/share/zoneinfo
katalogu. Struktura ta jest często nazywana „bazą danych Olson”, aby uhonorować jej twórcę.
Reguły dla każdej strefy czasowej są zdefiniowane jako wiersze pliku tekstowego, które są następnie kompilowane do pliku binarnego. Tak skompilowane linie określają nazwę strefy; zakres danych i czas obowiązywania strefy; przesunięcie względem UTC dla czasu standardowego; oraz notacja określająca sposób przejścia na czas letni i zimowy, jeśli dotyczy.
Na przykład katalog „Ameryka” zawiera informacje wymagane dla Nowego Jorku w America/New_York
użytym pliku powyżej.
Uwaga: specyfikacja nieistniejącej strefy (nazwa pliku) jest dyskretnie ignorowana i podawane są czasy UTC. Na przykład zgłasza niepoprawny czas:
TZ="America/New York" date ### WRONG ###
Pojedyncza specyfikacja UNIX, wersja 3, znana jako SUSv3 lub POSIX-2001, zauważa, że dla przenośności ciąg znaków identyfikujący opis strefy czasowej powinien zaczynać się od dwukropka. Zatem możemy również napisać:
TZ=":America/New_York" date
TZ=":America/Los_Angeles" date
Jako alternatywna metoda dla specyfikacji stref czasowych przy użyciu ścieżki do pliku opisu, SUSv3 opisuje model POSIX. W tym formacie ciąg jest zdefiniowany jako:
std offset [dst[offset][,start-date[/time],end-date[/time]]]
gdzie std
jest standardową nazwą komponentu i dst
tą, która zachowuje czas letni. Każda nazwa składa się z trzech lub więcej znaków. offset
Jest pozytywna dla stref czasowych na zachód od głównego południka i negatywne dla tych na wschód od południka. Przesunięcie jest dodawane do czasu lokalnego w celu uzyskania UTC (wcześniej znanego jako GMT). Pola start
i end
czas wskazują, kiedy występują przejścia standardowe / dzienne.
Na przykład we wschodnich Stanach Zjednoczonych standardowy czas jest o 5 godzin wcześniejszy niż UTC, a EST5EDT
zamiast niego możemy podać America/New_York
. Te alternatywy nie zawsze są jednak rozpoznawane, szczególnie w strefach poza Stanami Zjednoczonymi i najlepiej ich unikać.
HP-UX (system UNIX zgodny z SUSv3) używa reguł tekstowych /usr/lib/tztab
i nazw POSIX, takich jak EST5EDT, CST6CDT, MST7MDT, PST8PDT. Plik zawiera wszystkie reguły historyczne dla każdej strefy czasowej, podobnie jak baza danych Olson.
UWAGA: Powinieneś być w stanie znaleźć wszystkich stref czasowych, sprawdzając następującym katalogu: /usr/share/zoneinfo
.