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.