コマンドで表示されるタイムゾーンの略語を変更する方法がわかりますdate
。時間帯はそのままにしておきますが、CST
下にどのように変更しますかUTC+8
?
clay@LAPTOP-3PP2093I:~$ date
Thu Dec 1 23:05:28 CST 2022
ありがとうございます!
PS 1.オペレーティングシステムはUbuntu 22.04です。
PP 2.私のタイムゾーンはAsia / Taipeiなので、日付+%Zの結果はCSTです。しかし、私はこの略語が混乱していると思い、UTC + 8で読んでほしいです。
PS 3.時間をアジア/シンガポールに変更して解決策を試しました。はい、date + % Zの結果は+ 08です。しかし、私はタイムゾーンを変更したくありません。
ベストアンサー1
年間を通じて、過去、現在、および将来の日付について、UTCより8時間前にexport TZ='<UTC+8>-8'
名前付き現在のタイムゾーンを定義できます。UTC+8
それから:
$ date +'%::z %Z'
+08:00:00 UTC+8
$ date
Thu 1 Dec 23:04:48 UTC+8 2022
Asia/Taipei
タイムゾーンの履歴の変更も保存し、%Z
返された内容を変更するには、そのデータが派生したtzdataを変更して再コンパイルする必要があります。
apt source tzdata
sudo apt build-dep tzdata
台湾部分を次に変更します。
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
Rule Taiwan 1946 only - May 15 0:00 1:00 9
Rule Taiwan 1946 only - Oct 1 0:00 0 8
Rule Taiwan 1947 only - Apr 15 0:00 1:00 9
Rule Taiwan 1947 only - Nov 1 0:00 0 8
Rule Taiwan 1948 1951 - May 1 0:00 1:00 9
Rule Taiwan 1948 1951 - Oct 1 0:00 0 8
Rule Taiwan 1952 only - Mar 1 0:00 1:00 9
Rule Taiwan 1952 1954 - Nov 1 0:00 0 8
Rule Taiwan 1953 1959 - Apr 1 0:00 1:00 9
Rule Taiwan 1955 1961 - Oct 1 0:00 0 8
Rule Taiwan 1960 1961 - Jun 1 0:00 1:00 9
Rule Taiwan 1974 1975 - Apr 1 0:00 1:00 9
Rule Taiwan 1974 1975 - Oct 1 0:00 0 8
Rule Taiwan 1979 only - Jul 1 0:00 1:00 9
Rule Taiwan 1979 only - Oct 1 0:00 0 8
# Zone NAME STDOFF RULES FORMAT [UNTIL]
# Taipei or Taibei or T'ai-pei
Zone Asia/Taipei 8:06:00 - UTC+8:06 1896 Jan 1
8:00 - UTC+8 1937 Oct 1
9:00 - UTC+9 1945 Sep 21 1:00
8:00 Taiwan UTC+%s
次に、次を使用して新しいパッケージをビルドしますtzdata
。
dpkg-buildpackage -b
生成されたパッケージをインストールします。
それから:
$ export TZ=Asia/Taipei
$ date
Thu 1 Dec 23:17:41 UTC+8 2022
$ date -d 1979-08-01
Wed 1 Aug 00:00:00 UTC+9 1979
$ date -d 1892-06-01
Wed 1 Jun 00:00:00 UTC+8:6 1892
Ubuntuソースパッケージを更新するたびにこれをやり直す必要があるため(年に数回発生します。たとえば、国の政府が新しいDSTの変更日や規則を決定したときなど)、実用的ではない可能性があります。
date
の出力に問題がある場合は、次のこともできます。
$ date +"$(locale date_fmt | sed 's/%Z/UTC%:z/')"
Fri 2 Dec 00:31:05 UTC+08:00 2022
変える
$ date
Fri 2 Dec 00:31:05 CST 2022
または:
$ date +"$(locale d_t_fmt | sed 's/%Z/UTC%:z/')"
Fri 02 Dec 2022 00:33:02 UTC+08:00
変える:
$ date +%c
Fri 02 Dec 2022 00:33:02 CST
それら:
$ locale -k LC_TIME | grep fmt
d_t_fmt="%a %d %b %Y %T %Z"
d_fmt="%d/%m/%y"
t_fmt="%T"
t_fmt_ampm="%l:%M:%S %P %Z"
era_d_fmt=""
era_d_t_fmt=""
era_t_fmt=""
date_fmt="%a %e %b %H:%M:%S %Z %Y"
これは、デフォルト設定に基づいて新しいロケールをコンパイルして変更できます。
localedef -i <(sed 's/%Z/UTC%z/g' /usr/share/i18n/locales/en_GB) \
-f UTF-8 ~/.locales/en_GB.UTF-8@mytimezoneformat
export LOCPATH=~/.locales LC_TIME=en_GB.UTF-8@mytimezoneformat
(上記は私のホームディレクトリにインストールされていますが、設定せずにシステム全体でこれを行うこともできます$LOCPATH
。)
それから:
$ date
Fri 2 Dec 01:11:16 UTC+0800 2022
$ date +%c
Fri 02 Dec 2022 01:11:20 UTC+0800