9 votes

la date de l'interpréteur de commandes "-n heures" diffère de "il y a n heures" dans certaines situations

Dans le shell, lorsque j'imprime ceci

date -d "2016-11-23 13:05 -1 hours "  "+%Y-%m-%d %H:00:00"

Je reçois 2016-11-23 23:00:00. Étrange !

quand j'imprime ceci

date -d "2016-11-23 13:05 1 hours ago"  "+%Y-%m-%d %H:00:00"

Je reçois 2016-11-23 12:00:00 .

Pourquoi sont-ils différents ? Ce que je pense, c'est qu'ils sont tous les deux 2016-11-23 12:00:00 .

4voto

Jens Points 17702

Cela est dû au fait que le nombre négatif est traité comme un décalage par rapport à votre fuseau horaire, et non par rapport à l'horloge de l'UE. 13:05 . Dans mon fuseau horaire, MET (une heure à l'est de GMT), voici ce que j'obtiens :

$ date -d "2016-11-23 13:05 -1 hours "  "+%Y-%m-%d %H:00:00"
2016-11-23 16:00:00
$ TZ=GMT date -d "2016-11-23 13:05 -1 hours "  "+%Y-%m-%d %H:00:00"
2016-11-23 15:00:00
$ TZ=GMT-1 date -d "2016-11-23 13:05 -1 hours "  "+%Y-%m-%d %H:00:00"
2016-11-23 16:00:00
$ TZ=GMT-1 date -d "2016-11-23 13:05 -2 hours "  "+%Y-%m-%d %H:00:00"
2016-11-23 17:00:00

Le décalage du fuseau horaire est généralement spécifié sous la forme d'un nombre à quatre chiffres, comme dans le cas suivant

Sun, 29  Feb 2004  16:21:42 -0800

mais apparemment, date(1) se contente également d'un -1.

De la page de manuel :

DATE STRING

L'option --date=STRING est une chaîne de date lisible par l'homme au format libre, telle que "Sun, 29 Feb 2004 16:21:42 -0800" ou "2004-02-29 16:21:42" ou même "jeudi prochain". Une chaîne de date peut contenir des éléments indiquant la date du calendrier, l'heure du jour, le fuseau horaire, le jour de la semaine, l'heure relative, la date relative et des chiffres. semaine, l'heure relative, la date relative et des chiffres. Une chaîne vide indique le début de la journée. Le format de la chaîne de date est plus complexe qu'il n'est facile de le décrire ici, mais il est mais il est entièrement décrit dans la documentation info.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X