そのため、クエリの期間にタイムゾーンを設定できます。
TZ=America/New_York date
TZ
設定とdate
コマンドの間の空白に注意してください。Bourneライクおよび-ライクrc
シェルでTZ
は、コマンドラインに対してのみ変数を設定します。他のシェル(でcsh
、tcsh
、fish
)、いつでも使用することができるenv
代わりに、コマンドを:
env TZ=America/New_York date
tl; dr
Linuxシステム。タイムゾーンは、/usr/share/zoneinfo
ディレクトリ内のファイルで定義されます。この構造は、その設立貢献者を称えるために「Olsonデータベース」と呼ばれることがよくあります。
各タイムゾーンのルールは、テキストファイルの行として定義され、その後、バイナリファイルにコンパイルされます。そのようにコンパイルされた行は、ゾーン名を定義します。ゾーンが適用されるデータと時間の範囲。標準時間のUTCからのオフセット。また、該当する場合、夏時間への移行と夏時間からの移行がどのように発生するかを定義する表記法。
たとえば、ディレクトリ「America」にはAmerica/New_York
、上記で使用したファイルにニューヨークの必要な情報が含まれています。
存在しないゾーン(ファイル名)の指定は暗黙のうちに無視され、UTC時間が報告されることに注意してください。たとえば、これは不正確な時間を報告します:
TZ="America/New York" date ### WRONG ###
SUSv3またはPOSIX-2001として知られるSingle UNIX Specification、バージョン3では、移植性のために、タイムゾーンの説明を識別する文字列はコロン文字で始まる必要があることに注意しています。したがって、次のように書くこともできます。
TZ=":America/New_York" date
TZ=":America/Los_Angeles" date
記述ファイルへのパス名を使用したタイムゾーンの指定の代替方法として、SUSv3はPOSIXモデルを記述します。この形式では、文字列は次のように定義されます。
std offset [dst[offset][,start-date[/time],end-date[/time]]]
どこstd
が標準のコンポーネント名でdst
、夏時間の名前です。各名前は3文字以上で構成されています。offset
子午線のものイーストの西子午線のタイムゾーンのための正と負です。UTC(以前はGMT)を取得するために、オフセットが現地時間に追加されます。start
およびend
標準/夏時間遷移が発生したときの時間のフィールドが示しています。
たとえば、米国東部では、標準時間はUTCより5時間早くEST5EDT
、の代わりに指定できますAmerica/New_York
。ただし、これらの選択肢は、特に米国外の地域では常に認識されているわけではなく、避けるのが最善です。
HP-UX(SUSv3準拠のUNIX)では/usr/lib/tztab
、EST5EDT、CST6CDT、MST7MDT、PST8PDTなどのPOSIX名でテキストルールを使用します。このファイルには、Olsonデータベースと同様に、各タイムゾーンの履歴ルールがすべて含まれています。
注:次のディレクトリを調べると、すべてのタイムゾーンを見つけることができます/usr/share/zoneinfo
。