Conversion de fuseau horaire par ligne de commande

15

Je connais http://www.timeanddate.com/worldclock/converter.html

Je n'arrive pas à comprendre comment interroger http://www.google.com dans un format naturel sain, comme "17h00, heure de Paris dans PST".

Ou dois-je écrire une telle application?

hendry
la source
Que voulez-vous dire exactement? Ligne de commande linux? Commande que vous pouvez taper dans Google? Quoi?!
Dal Hundal
La ligne de commande dans le shell et la boîte de recherche de Google sont une ligne de commande pour moi
hendry
1
peut-être un meilleur outil ferait des villes par codes d'aéroport, 17h LHR dans SFO
hendry
@hendry dateutils peut convertir les fuseaux horaires en fonction des codes d'aéroport iata et icao: dateconv 2017-05-16T17:00 --from-zone iata:SFO --zone iata:LHR->2017-05-17T01:00:00
hroptatyr

Réponses:

32

Il est 18 heures à Taipei, quelle heure est-il ici?

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

À 11 heures, ici à Londres, quelle heure est-il à Taipei?

TZ=Asia/Taipei date -d "11:00 BST"
Fri Jul 16 18:00:00 CST 2010
hendry
la source
Étrange, mais le premier moyen ne fonctionne pas pour moi: TZ=Europe/Moscow date --date='TZ="Asia/Taipei" 18:00' Mon Mar 27 18:00:00 CST 2017- c’est-à-dire qu’il me dit simplement la date à Taipei, et non la date locale pour ce point. Bien que manpage indique que votre méthode est correcte. Est-ce que je manque quelque chose?, coreutils 8.26Arch Linux
MarSoft
Pour trouver un identifiant de fuseau horaire, utilisez quelque chose comme: timedatectl list-timezones|grep -i taipei(empreintes Asia/Taipei), timedatectl list-timezones|grep -i berlin(empreintes Europe/Berlin), timedatectl list-timezones|grep -i angeles(empreintes America/Los_Angeles)
exebook
5

Cet exemple provient de http://www.pixelbeat.org/cmdline.html#dates

Il donne l'heure locale correspondant à 9 heures sur la côte ouest des États-Unis, en tenant compte des différentes transitions d'économie de lumière du jour.

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

Utilisez tzselect pour obtenir le TZ. Le format PST est ambigu. IST = heure normale de l'Inde et heure d'été irlandaise, par exemple.

pixelbeat
la source
2
Je ne savais pas tzselect, merci. Si vous entrez une erreur 'TZ', vous obtiendrez des résultats trompeurs, par exemple TZ = date de Londres vendredi 16 juil. 10:28:52 Londres 2010
vendredi
4

Je pense que cela est plus proche de la question posée par le PO (puisqu'il ne sait pas nécessairement que la BST est Taipei? Et la réponse n'explique pas comment se rendre à "Asia / Taipei" à partir de "BST").

D'abord ma date actuelle:

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

Puis la date que je veux savoir:

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

Donc, je sais qu'il ne 5pm BSTreste que 2 heures.

J'oublie généralement que si je dois ajouter ou supprimer deux heures de l'heure HAE, j'ai donc un petit script avec les fuseaux horaires avec lesquels je dois travailler:

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

Et la sortie:

$ 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

Vous tzpouvez trouver des emplacements valides pour votre script ici /usr/share/zoneinfo.

Mais encore une fois, je l’utilise simplement dans le futur date -d '<time> <timezone>'.

DavidG
la source
2

Utilisez Wolfram Alpha . À l'URL de base…

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

annexer la conversion en remplaçant les espaces par +. Par exemple:

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

Notez que Wolfram Alpha ne semble pas reconnaître BSTle fuseau horaire.

drizzt
la source
Comment rechercher rapidement les codes de fuseau horaire?
hendry
@hendry Ceci est une carte interactive en ligne cool: timeanddate.com/time/map/#!cities=241
DavidG
1

Je sais que c'est un vieux fil, mais j'avais besoin d'un code pour le même cas d'utilisation et, sur la base des idées présentées ici, j'ai développé ce petit script 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

Vous pouvez soit utiliser pour vérifier les différences de temps aujourd'hui ou à une date ultérieure:

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
la source
scénario fantastique! déjà ajouté à mon ensemble d'outils, merci! Pensez-vous qu'il est possible de rendre le temps en colonnes au lieu de lignes?
cesarpachon
Peut être. Je ne vois pas d'utilisation pour ça, cependant.
Iuri Gavronski le