コマンドラインによるタイムゾーン変換


19

http://www.timeanddate.com/worldclock/converter.htmlについて知っています

「PSTの午後5時」のような自然な形式でhttp://www.google.comを照会する方法がわかりません。

または、そのようなアプリを作成する必要がありますか?


どういう意味?コマンドラインLinux?Googleに入力できるコマンドは?何?!
ダルフンダル

シェルのコマンドラインとGoogleのクエリボックスはどちらも私にとってコマンドラインです。
hendry

1
おそらく、より良いツールは、空港コード、SFOの午後5時LHR
hendry

@hendry dateutilsは、iataおよびicao空港コードに基づいてタイムゾーン変換を行うことができます。- dateconv 2017-05-16T17:00 --from-zone iata:SFO --zone iata:LHR>2017-05-17T01:00:00
hroptatyr

回答:


35

台北の午後6時、ここは何時ですか?

date --date='TZ="Asia/Taipei" 18:00'
Fri Jul 16 11:00:00 BST 2010

ロンドンの午前11時、台北は何時ですか?

TZ=Asia/Taipei date -d "11:00 BST"
Fri Jul 16 18:00:00 CST 2010

奇妙なことですが、最初の方法ではうまくいきません。TZ=Europe/Moscow date --date='TZ="Asia/Taipei" 18:00' Mon Mar 27 18:00:00 CST 2017つまり、その時点での現地の日付ではなく、台北の日付を教えてくれるだけです。マンページにはメソッドが正しいと書かれていますが。何か不足していますか?.. coreutils 8.26、Arch Linux
MarSoft

:のようなタイムゾーン識別子用のsomethin検索するにはtimedatectl list-timezones|grep -i taipei(プリントAsia/Taipei)、 timedatectl list-timezones|grep -i berlin(版画Europe/Berlin)、 timedatectl list-timezones|grep -i angeles(版画America/Los_Angeles
exebook

5

この例はhttp://www.pixelbeat.org/cmdline.html#datesからのものです

これは、米国西海岸の午前9時に対応する現地時間を提供し、異なる夏時間の移行を考慮しています。

date --date='TZ="America/Los_Angeles" 09:00 next Fri'

tzselectを使用してTZを取得します。PST形式はあいまいです。IST =たとえば、インド標準時とアイルランドの夏時間。


2
知らなかったtzselect、ありがとう。間違った「TZ」入力を入力すると、誤解を招く結果が得られる場合があります。たとえば、TZ = London date Fri Jul 16 10:28:52 London 2010
hendry

5

これはOPが尋ねたものに近いと思います(彼は必ずしもBSTが台北であることを知っているわけではないので、答えは「BST」から「アジア/台北」に到達する方法を説明していません)。

最初に私の現在の日付:

$ date
Mon Apr 21 13:07:21 MDT 2014

次に、知りたい日付:

$ date -d '5pm BST'
Mon Apr 21 15:00:00 MDT 2014

だから私はそれ5pm BSTが2時間離れていることを知っています。

通常、EDT時間に2時間を追加または削除する必要がある場合は忘れるので、共通のタイムゾーンを使用する小さなスクリプトを作成します。

$ cat tz
#!/bin/bash
TZ='America/Edmonton' date
TZ='America/Chicago' date
TZ='America/New_York' date

そして出力:

$ tz
Mon Apr 21 13:12:32 MDT 2014
Mon Apr 21 14:12:32 CDT 2014
Mon Apr 21 15:12:32 EDT 2014

tzスクリプトの有効な場所はこちらにあります/usr/share/zoneinfo

しかし、繰り返しますが、将来的にはを使用するだけdate -d '<time> <timezone>'です。


2

Wolfram Alphaを使用します。基本的なURLへ…

http://www.wolframalpha.com/input/?i=

スペースをに置き換えて、変換を追加します+。例えば:

http://www.wolframalpha.com/input/?i=5+PM+CET+to+PST

Wolfram AlphaはBSTタイムゾーンとして認識していないようです。


タイムゾーンコードをどのようにすばやく検索しますか?
ヘンドリー

@hendryこれはクールなインタラクティブなオンラインマップです:timeanddate.com/time/map
#!

1

古いスレッドであることは知っていますが、同じユースケースのコードが必要であり、ここでのアイデアに基づいて、この小さなbashスクリプトを開発しました。

#!/bin/bash
# ig20180122 - displays meeting options in other time zones
# set the following variable to the start and end of your working day
myday="8 20" # start and end time, with one space
# set the local TZ
myplace='America/Sao_Paulo'
# set the most common places
place[1]='America/Toronto'
place[2]='America/Chicago' # Houston as well
place[3]='Europe/Amsterdam'
place[4]='Europe/Dublin'
# add cities using place[5], etc.
# set the date format for search
dfmt="%m-%d" # date format for meeting date
hfmt="+%B %e, %Y" # date format for the header
# no need to change onwards
format1="%-10s " # Increase if your cities are large
format2="%02d "
mdate=$1
if [[ "$1" == "" ]]; then mdate=`date "+$dfmt"`; fi
date -j -f "$dfmt" "$hfmt" "$mdate"
here=`TZ=$myplace date -j -f "$dfmt" +%z  "$mdate"`
here=$((`printf "%g" $here` / 100))
printf "$format1" "Here" 
printf "$format2" `seq $myday` 
printf "\n"
for i in `seq 1 "${#place[*]}"`
do
    there=`TZ=${place[$i]} date -j -f "$dfmt" +%z  "$mdate"`
    there=$((`printf "%g" $there` / 100))
    city[$i]=${place[$i]/*\//}
    tdiff[$i]=$(($there - $here))
    printf "$format1" ${city[$i]}
    for j in `seq $myday`
    do
        printf "$format2" $(($j+${tdiff[$i]}))
    done
    printf "(%+d)\n" ${tdiff[$i]}
done

今日または将来の日付の時差を確認するために使用できます。

16:08 $ meet
January 22, 2019
Here       08 09 10 11 12 13 14 15 16 17 18 19 20 
Toronto    05 06 07 08 09 10 11 12 13 14 15 16 17 (-3)
Chicago    04 05 06 07 08 09 10 11 12 13 14 15 16 (-4)
Amsterdam  11 12 13 14 15 16 17 18 19 20 21 22 23 (+3)
Dublin     10 11 12 13 14 15 16 17 18 19 20 21 22 (+2)
16:13 $ meet 05-24
May 24, 2019
Here       08 09 10 11 12 13 14 15 16 17 18 19 20 
Toronto    07 08 09 10 11 12 13 14 15 16 17 18 19 (-1)
Chicago    06 07 08 09 10 11 12 13 14 15 16 17 18 (-2)
Amsterdam  13 14 15 16 17 18 19 20 21 22 23 24 25 (+5)
Dublin     12 13 14 15 16 17 18 19 20 21 22 23 24 (+4)
16:13 $ 

HTH


素晴らしいスクリプト!すでに私のツールセットに追加されました、ありがとう!行ではなく列で時間をレンダリングすることは可能だと思いますか?
セサルパッション

多分。しかし、その使用法はわかりません。
Iuri Gavronski
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.