Wie ist das möglich und wie gehe ich damit um? Ich erstelle ein Backup-Skript, das von Unix abhängig ist date
und einen interessanten Fehler entdeckt hat:
[root@web000c zfs_test]# date +%y-%m-%d --date='2 months ago'
14-04-01
[root@web000c zfs_test]# date +%y-%m-%d --date='3 months ago'
14-02-28
[root@web000c zfs_test]# date
Sun Jun 1 00:08:50 CEST 2014
date
command-line-interface
Drückeberger
quelle
quelle
date
...Antworten:
Dieses Verhalten tritt aufgrund der Sommerzeit (Sommerzeit) auf.
Weil Sie sich gerade in der Sommerzeit befinden, in der Ihre Uhr eine Stunde voraus ist, wenn Sie vor drei Monaten um kurz nach Mitternacht am ersten Juni nachfragen, endet die Zeit eine Stunde "früher", weil es nicht Sommerzeit drei war vor wenigen Monaten.
In der GNU- Datumsdokumentation wird vorgeschlagen, dies zu umgehen, indem 12:00 Uhr und der 15. des Monats als Ausgangspunkt verwendet werden, wenn nach relativen Tagen bzw. Monaten gefragt wird. Beispielsweise:
quelle
[root@web000c zfs_test]# date +%y-%m-%d --date='3 months ago'
14-03-01
[root@web000c zfs_test]# date
Sun Jun 1 01:00:15 CEST 2014
date
Verwendungsvorschlag übersehen habe .Wenn das absolute Timing Ihr Hauptanliegen ist, ist es wahrscheinlich am besten, UTC zu verwenden, da es für diesen Zweck vorhanden ist. Michaels Antwort ist sehr nützlich, wenn Sie innerhalb des Problems arbeiten müssen, aber es ist normalerweise eine gute Idee, es vollständig zu vermeiden, wo Sie können.
Wenn Ihr System standardmäßig nicht auf UTC eingestellt ist, können Sie die Zeitzone am einfachsten übergeben, indem Sie Ihrem Befehl die
TZ
Umgebungsvariable voranstellen. Dies begrenzt den Zonenwechsel auf einen einzelnen Befehl und verhindert, dass die Variable in Ihre nachfolgenden Befehle gelangt.Sie sollten die
TZ
Variable nicht exportieren , da dies die Problembehandlung sehr verwirrend machen kann, wie im Folgenden gezeigt wird.quelle
In diesem bestimmten Jahr, in dem Ihr Computer denkt, dass er in Betrieb ist, und an dem bestimmten Datum, das Sie für einen Test ausgewählt haben (vor 1 Monat, vor 2 Monaten und vor 3 Monaten), ja, es handelt sich wahrscheinlich um eine Erkennung am 29. Februar. Nicht immer ein Fehler, aber ..
Heute ist NICHT der 01.06.2014. Versuch es noch einmal. Stellen Sie das Computerdatum auf 2013-06-01 ein. Versuch es noch einmal.
Stellen Sie das Computerdatum auf 2014-09-01 ein. Versuch es noch einmal.
quelle
MDY
Format angeben, verwenden Sie bitte/
es zum Trennen. Da wir hier eine internationale Gemeinschaft sind, ist es noch besser, geeignete ISO-Daten zu verwenden, z2014-09-01
.