BASH计算具有夏时制的两个时区之间的秒数

时间:2018-07-09 15:26:27

标签: bash date timezone epoch

由于中央时区CDT在中央标准时间(GMT-6)和中央日光时间(GMT-5)之间振荡,因此有一种方法可以使用BASH /日期来计算特定时间的GMT和中央时间之间的秒数日期?

例如,计算3月1日中央时间(含夏令时)与格林尼治标准时间之间的秒数应为6小时* 3600秒/小时= 21600秒。如果在3月31日进行计算,则应该得出5小时* 3600秒/小时= 18000秒。

1 个答案:

答案 0 :(得分:1)

这是我找到的解决方案。

$ date1="2018-03-11 01:59:00"

$ echo "$(TZ="US/Central"; date -d "$date1" +"%s") - $(date -u -d "$date1" +"%s")" | bc
21600

$ date1="2018-03-11 03:01:00"

$ echo "$(TZ="US/Central"; date -d "$date1" +"%s") - $(date -u -d "$date1" +"%s")" | bc
18000

由于它不能很好地处理无效日期,因此不太理想:

$ date1="2018-03-11 02:00:00"

$ echo "$(TZ="US/Central"; date -d "$date1" +"%s") - $(date -u -d "$date1" +"%s")" | bc
date: invalid date ‘2018-03-11 02:00:00’
-1520733600