Zeitzonenkonvertierung über die Befehlszeile

19

Ich kenne http://www.timeanddate.com/worldclock/converter.html

Ich kann nicht herausfinden, wie http://www.google.com in einem vernünftigen natürlichen Format wie "5pm BST in PST" abgefragt wird .

Oder muss ich eine solche App schreiben?

Hendry
quelle
Was genau meinst du? Kommandozeilen-Linux? Befehl, den Sie in Google eingeben können? Was?!
Dal Hundal
Die Befehlszeile in der Shell und das Abfragefeld von Google sind für mich beide eine Befehlszeile
Hendry
1
Vielleicht wäre ein besseres Tool, Städte nach Flughafen-Codes, 17 Uhr MEZ im OFS
Hendry
@hendry dateutils kann die Zeitzonen anhand der iata- und icao-Flughafencodes konvertieren: dateconv 2017-05-16T17:00 --from-zone iata:SFO --zone iata:LHR->2017-05-17T01:00:00
hroptatyr

Antworten:

35

Es ist 18 Uhr in Taipei, wie spät ist es hier?

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

Wie spät ist es um 11 Uhr hier in London in Taipeh?

TZ=Asia/Taipei date -d "11:00 BST"
Fri Jul 16 18:00:00 CST 2010
Hendry
quelle
Seltsam, aber der erste Weg funktioniert bei mir nicht: TZ=Europe/Moscow date --date='TZ="Asia/Taipei" 18:00' Mon Mar 27 18:00:00 CST 2017- dh er sagt mir nur das Datum in Taipeh, nicht mein lokales Datum für diesen Zeitpunkt. Obwohl die Manpage besagt, dass Ihre Methode korrekt ist. Vermisse ich etwas? .. coreutils 8.26, Arch Linux
MarSoft
Um eine Zeitzonen- timedatectl list-timezones|grep -i taipeiAsia/Taipeitimedatectl list-timezones|grep -i berlinEurope/Berlintimedatectl list-timezones|grep -i angelesAmerica/Los_Angeles
ID zu finden, verwenden Sie Folgendes
5

Dieses Beispiel stammt von http://www.pixelbeat.org/cmdline.html#dates

Es gibt die Ortszeit an, die 9:00 Uhr morgens an der Westküste der USA entspricht, und berücksichtigt dabei unterschiedliche Lichtsparübergänge.

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

Verwenden Sie tzselect, um die TZ zu erhalten. Das PST-Format ist nicht eindeutig. IST = Indian Standard Time und Irish Summer Time zum Beispiel.

Pixelbeat
quelle
2
Wusste nicht tzselect, danke. Wenn Sie falsch ‚TZ‘ Eingabe eingeben können Sie erhalten Ergebnisse irreführend, zB TZ = London Datum Fr 16. Juli 10.28.52 London 2010
hendry
5

Ich denke, dies entspricht eher der Frage des OP (da er nicht unbedingt weiß, dass BST Taipei ist? Und die Antwort erklärt nicht, wie man von "BST" nach "Asia / Taipei" kommt).

Zuerst mein aktuelles Datum:

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

Dann das Datum, das ich wissen möchte:

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

Also ich weiß, dass 5pm BSTdas 2 Stunden entfernt ist.

Normalerweise vergesse ich, wenn ich zwei Stunden EDT-Zeit hinzufügen oder entfernen muss, damit ich ein kleines Skript mit den üblichen Zeitzonen habe, mit denen ich arbeiten muss:

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

Und die Ausgabe:

$ 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

Gültige Speicherorte für Ihr tzSkript finden Sie hier /usr/share/zoneinfo.

Aber auch in Zukunft benutze ich es einfach date -d '<time> <timezone>'.

DavidG
quelle
2

Verwenden Sie Wolfram Alpha . Zur grundlegenden URL…

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

Fügen Sie die Konvertierung hinzu, wobei Leerzeichen durch "" ersetzt werden +. Beispielsweise:

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

Beachten Sie, dass Wolfram Alpha keine BSTZeitzone zu erkennen scheint .

drizzt
quelle
Wie kann man schnell Zeitzonencodes nachschlagen?
Hendry
@hendry Dies ist eine coole interaktive Online-Karte: timeanddate.com/time/map/#!cities=241
DavidG
1

Ich weiß, es ist ein alter Thread, aber ich brauchte einen Code für den gleichen Anwendungsfall und entwickelte auf der Grundlage der hier vorgestellten Ideen dieses kleine Bash-Skript:

#!/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

Sie können entweder verwenden, um die Zeitunterschiede heute oder in einem zukünftigen Datum zu überprüfen:

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
quelle
fantastisches Drehbuch! bereits zu meinem Toolset hinzugefügt, danke! Denken Sie, dass es möglich ist, Zeit in Spalten anstelle von Zeilen zu rendern?
Cesarpachon
Könnte sein. Ich sehe jedoch keine Verwendung dafür.
Iuri Gavronski