web-dev-qa-db-ja.com

システム時刻を変更せずに別のタイムゾーンで現在の時刻を取得するにはどうすればよいですか?

「日付」を使用して別のタイムゾーンの時刻を取得しようとしていますが、失敗します。私がグーグルで見つけたすべての方法は、システムのタイムゾーンを変更することを含みますが、それは私が望むものではありません。

私とは異なるタイムゾーンで現在の時刻を返す単一のコマンドはありますか?

17
ID-ZERO

タイムゾーンは/usr/share/zoneinfo。たとえば、シンガポールの現在の時刻が必要な場合は、それをdateに渡すことができます。

TZ=Asia/Singapore date
Sun Jun 14 17:17:49 SGT 2015

この手順を簡略化するために、異なるタイムゾーンで現地時間を頻繁に確立する必要がある場合は、シェルのrcファイルにいくつかの関数を追加できます(例:.bashrc):

zones() { ls /usr/share/zoneinfo/"$1" ;}
zone() { TZ="$1"/"$2" date; }

1つ目は、地域の正しいゾーンリストを出力し、その情報を利用して、現地時間を出力できます。

28
jasonwryan

zdumpを使用できます:

NAME
       zdump - timezone dumper

SYNOPSIS
       zdump [ --version ] [ --help ] [ -v ] [ -c [loyear,]hiyear ] [ zonename ... ]

DESCRIPTION
       Zdump prints the current time in each zonename named on the command line.

例:

$ zdump ~$ zdump Iceland
Iceland  Sun Jun 14 09:40:30 2015 GMT

$ zdump Japan
Japan  Sun Jun 14 18:34:36 2015 JST

タイムゾーンデータファイルは/usr/share/zoneinfoにあります。

すべての時間をfind /usr/share/zoneinfo/ -type f | xargs zdumpで印刷することもできます。そして、ドバイの特定の例のためにgrepできます

$ find /usr/share/zoneinfo/ -type f | xargs zdump | grep -i Dubai
/usr/share/zoneinfo/right/Asia/Dubai                      Sun Jun 14 13:38:26 2015 GST
/usr/share/zoneinfo/Asia/Dubai                            Sun Jun 14 13:38:51 2015 GST

gworldclockを使用できます:-

NAME
       gworldclock - Displays time and date in specified time zones.

SYNOPSIS
       gworldclock [ -f FILE ]

DESCRIPTION
       gworldclock  displays  the  time  and  date of specified time zones using a GTK+ interface. It also allows the
       zones to be "rendezvoused" or "synchronised" to a time other than the current time.

screenshot

11
Pandya

ほとんどすべてのプログラムはTZ環境変数を使用してタイムゾーンを決定し、その変数が設定されていない場合はシステム設定にフォールバックします。

TZ=Pacific/Yap date
TZ=Pacific/Yap xclock

ほとんどすべてのオペレーティングシステム(Windowsを含む)は IANAデータベース からのタイムゾーン情報を使用します。ほとんどのタイムゾーンにはContinent/Townという形式の名前が付いています。ここで、Townは通常、独自のタイムゾーンルールを定義する国または地域の最大の都市です。中央ヨーロッパ時間のCETや東部標準時間のESTのように、いくつかの略語が定義されていますが、ロケール間での競合のために、それらが必ずしも期待どおりにならない場合があります(例:ESTは米国のオーストラリアではありません)。タイムゾーンルールは通常、/usr/share/zoneinfo/usr/lib/zoneinfo/usr/lib/locale/TZまたは類似の場所にあるファイルによって定義されます。

TZ変数にも standard 値があります。 UTCからの固定オフセットが必要な場合は、TZ=-4(GMTの東4時間)またはTZ=9:30(GMTの西9時間半)などを使用できます。