几个月以来,我在我的NAS上的脚本中使用了这个命令:
sudo rtcwake -m disk -t "$(date -d 'tomorrow 02:00:00' '+%s')"今天我得到了一个错误。
我的测试结果:
root@omvnas:~# date -d 'tomorrow 02:00:00' '+%s'
date: ungültiges Datum „tomorrow 02:00:00“
root@omvnas:~# date -d '+1 day 3:00'
Mo 30. Mär 03:00:00 CEST 2020
root@omvnas:~# date -d '+1 day 2:00'
date: ungültiges Datum „+1 day 2:00“
root@omvnas:~# date -d '+1 day 1:00'
Mo 30. Mär 01:00:00 CEST 2020"ungültiges Datum“是德语中”无效日期“的意思。
为什么会发生这种情况?
发布于 2020-03-30 03:36:13
这个问题确实与daylight saving time有关,但这似乎不是date程序的错误,而是一个“特性”:下面的所有命令都会引发错误,因为本地时区中不存在指定的时间(直接从01:59:59到03:00:00)。
$ date -d '02:00:00'
date: invalid date ‘02:00:00’
$ date -d '02:30:00'
date: invalid date ‘02:30:00’
$ date -d '+1 day 02:30:00'
date: invalid date ‘+1 day 02:30:00’
$ date -d '+2 day 02:30:00'
date: invalid date ‘+2 day 02:30:00’上面的最后两个命令肯定会引发错误,因为date程序试图在解析指定时间后递增天数,这确实是无效的。
正如我在评论中提到的,解决此问题的可靠方法是依赖UTC时区(选项--utc):
$ date -d 'today 01:59:59' -R
Sun, 29 Mar 2020 01:59:59 +0100
$ date -d 'today 01:59:59' '+%s'
1585443599
$ date -d 'today 02:00:00' '+%s'
date: invalid date ‘today 02:00:00’
$ date -d 'today 03:00:00' '+%s'
1585443600
$ date -u -d 'today 01:00:00' '+%s' # OK thanks to option -u
1585443600发布于 2020-03-30 03:47:04
这似乎是与daylight saving time (DST)相关的date / tzdata中的错误。
这是一个相关的错误报告:https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=819342
它仍然可以用当前的Debian Sid重现。
你现在最好的办法是使用一个不受DST影响的时间(例如03:00:00)。
https://stackoverflow.com/questions/60918890
复制相似问题