Il semble que je ne parvienne pas à obtenir la date bash UTC en seconde. Je suis à Sydney donc + 10heures UTC
date
Thu Jul 3 17:28:19 WST 2014
date -u
Thu Jul 3 07:28:20 UTC 2014
Mais quand j'ai essayé de le convertir, j'obtiens le même résultat, qui n'est pas l'heure UTC
date +%s
1404372514
date -u +%s
1404372515
Qu'est-ce que j'oublie ici?
Après avoir obtenu une réponse disant que date +%s
Renvoyait l'heure UTC, voici plus de détails sur le problème auquel je suis confronté.
J'essaie de comparer une date écrite dans un fichier avec Python. Cette date est écrite en secondes en heure UTC. Et le bash date +%s
Ne me donne pas le même. En fait, si je fais dans python time.asctime(time.localtime(date_in_seconds_from_bash))
] _, je reçois l'heure actuelle de Sydney, pas l'heure UTC. Je ne comprends pas.
Je crois +%s
est en secondes depuis Epoch. C'est invariant de fuseau horaire.
Je parie que c'est ce qui était prévu comme résultat.
$ date -u --date=@1404372514
Thu Jul 3 07:28:34 UTC 2014
Vous dites que vous utilisez:
time.asctime(time.localtime(date_in_seconds_from_bash))
où date_in_seconds_from_bash
est vraisemblablement la sortie de date +%s
.
La fonction time.localtime
, Comme son nom l'indique, vous donne l'heure locale .
Si vous voulez UTC, utilisez time.gmtime()
plutôt que time.localtime()
.
Comme La réponse de JamesNoonan dit, le résultat de date +%s
Est invariant du fuseau horaire, de sorte que date +%s
Est exactement équivalent à date -u %s
. Il imprime le nombre de secondes depuis "l’époque", qui est 1970-01-01 00:00:00 UTC
. Le résultat que vous montrez dans votre question est tout à fait conforme à cela:
date -u
Thu Jul 3 07:28:20 UTC 2014
date +%s
1404372514 # 14 seconds after "date -u" command
date -u +%s
1404372515 # 15 seconds after "date -u" command
On pourrait envisager d’ajouter cette ligne à ~/.bash_profile
(ou similaire ) afin d’obtenir rapidement l’UTC actuel à la fois comme heure actuelle et en secondes depuis l’époque.
alias utc='date -u && date -u +%s'