BASH compute number of seconds between two timezones with daylight savings
由于中央时区CDT在中央标准时间(GMT-6)和中部夏令时(GMT-5)之间振荡,有没有办法使用BASH / date来计算特定日期的GMT和中部时间之间的秒数?
例如,计算中央时间(使用DST)和3月1日GMT之间的秒数应该产生6小时* 3600秒/小时= 21600秒。 在3月31日计算它应该产生5小时* 3600秒/小时= 18000秒。
这是我找到的解决方案。
1 2 3 4 5 6 7 8 9 | $ 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 |
它不是很理想,因为它没有非常优雅地处理无效日期:
1 2 3 4 5 | $ 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 |