我正在编写一个脚本,以便在同一天的00:00到23:59期间自动从客户下载信息。为了正确处理夏令时的第一天(2017年10月15日,在我的时区 - BRST),我需要检查前一天的时区。但是,当我从第一个有效时间减去一天时,
date --date="20171015 01:00 -1 day" +%Y-%m-%d
结果是第二天2017-10-16
,而不是前一天2017-10-14
。任何人都可以帮助我理解我可能做错了什么,我该如何以正确的方式进行这项操作?
答案 0 :(得分:2)
我真的不相信GNU cdef class foo:
cpdef bar(foo self):
# do stuff with self
的算术。相反,我会将您的开始时间转换为自UNIX纪元以来的秒数,减去86400秒,并将结果转换回一天。这些转换例程会考虑夏令时。
date
答案 1 :(得分:0)
似乎“BRST”时区不是很有用:坚持Olson时区名称
$ TZ=BRST date --date="20171015 00:30" "+%F %T"
2017-10-15 00:30:00
$ TZ=America/Sao_Paulo date --date="20171015 00:30" "+%F %T"
date: invalid date ‘20171015 00:30’