タイムゾーンをUTC-8に設定する必要がありますが、PSTまたはGMT-8に設定するオプションしか表示されません。 UTC-8として表示する方法はありますか?
RHEL6を実行しています。
$ date Sat Feb 23 01:41:41 UTC 2019
このタイムゾーンをどこに設定するかについてはまだ述べていませんが、TZ
環境変数で任意のゾーン名を作成できます。
$ TZ='<UTC-8>+8' date
Fri Feb 22 19:25:36 UTC-8 2019
+8
は、POSIXが愚かなことに、 オフセットが後方にある必要がある (西に向かって増加する)であるためです。 <...>
の部分は表示される名前であり、任意の1つの単語にすることができます。純粋にアルファベットの場合、山括弧は必要ありませんが、-
と8
はそれらを必要とします。
$ TZ='<yesterday>24' date
Fri Feb 22 03:30:15 yesterday 2019
$ TZ='tomorrow-24' date
Sun Feb 24 03:30:26 tomorrow 2019
GUIまたはその他のゾーン選択ツールを使用している場合は、おそらく/usr/share/zoneinfo
でシステムに含まれているゾーン定義を探しています。別のゾーンをそのリストに表示する場合は、適切なzoneinfoファイルを作成し、所定の場所にコピーする必要があります。 zic
ツールは、zoneinfoファイルを テキスト形式 からコンパイルするために使用されます。これは比較的簡単です(特に、既存のゾーンを変更して名前を変更する場合)。 。
一部のシステム(Red Hatではないと思います)には、タイムゾーンを名前としてグローバルに設定するファイル/etc/timezone
があり、その中でそのTZ
変数形式を使用できます。他のシステムは/etc/localtime
のみを使用します。これは、通常、zoneinfoファイルの1つのコピーであるため、そこにも適切なファイルを作成する必要があります。
ユーザーごとまたはセッションごとのゾーンの場合、使用できるのは環境変数のみです。
ゾーンを「UTC-8
」または特に定義されていない他のゾーンに設定した場合、 2つのものとして扱われます :最初に、ゾーンの名前( "UTC":何でも)アルファベット文字列があります)、2番目にPOSIX方向のオフセット(そこにある数字は何でも)。つまり、TZ=UTC-8 date
は次のようなものを出力します
Sat Feb 23 11:50:01 UTC 2019
-つまり、中国または西オーストラリアの時刻を報告し、ゾーンは「UTC」と呼ばれると考えています。この動作は、タイプミスをしたときに追跡するのが非常に混乱し、煩わしいものです。質問に含めた出力の原因かもしれませんが、わかりません。
これは、従来のほとんど廃止されたPOSIXタイムゾーン形式RST6RDT5,M10.3.0/00:00:00,M2.4.0/00:00:00
として解析されています。これには、標準時間と夏時間のオプションの名前とオフセット、および2つの間の切り替えの日付が含まれます。このアプローチには、重要なゾーンには多くの欠点があり、ゾーンファイルのように定義の履歴変更を追跡しません。
「正しい」方法は、PSTとして表示されるAmerica/Los_Angelesゾーンを使用するか、名前を使用できない場合や夏時間の変更を望まない場合はEtc/GMT +8を使用することです。 GMT + 8は、オフセットを「-08」として表示し、テキストラベルは付けません。おそらく正しいと思われることが十分ではない場合があり、その場合は上記のいずれかで問題ありません。