如何从shell脚本中的无效日期中减去一天?

时间:2017-10-15 23:07:13

标签: shell date sh

我正在编写一个脚本,以便在同一天的00:00到23:59期间自动从客户下载信息。为了正确处理夏令时的第一天(2017年10月15日,在我的时区 - BRST),我需要检查前一天的时区。但是,当我从第一个有效时间减去一天时,

date --date="20171015 01:00 -1 day" +%Y-%m-%d

结果是第二天2017-10-16,而不是前一天2017-10-14。任何人都可以帮助我理解我可能做错了什么,我该如何以正确的方式进行这项操作?

2 个答案:

答案 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’