从时间开始的日期和时间,以秒为单位,具有时区和夏令时

时间:2015-12-23 11:43:01

标签: bash datetime

我试图从bash的epoch获取当前日期/时间秒。 我用

做到了
date +%s

但这并不能解决我的时区和夏令时问题。

喜欢的东西 1)获得时代 2)增加3600(我在罗马,我是GMT + 1) 3)仅在我们夏令时时添加3600

在bash中有可能吗?

2 个答案:

答案 0 :(得分:1)

我找到了一种方法:

#!/bin/sh
OFFSET=$(date +%z)
SIGN=${OFFSET:0:1}
HOURS=${OFFSET:1:2}
MINUTES=${OFFSET:3:2}
EPOCH=$(date +%s)
echo $(( ${EPOCH} ${SIGN} ( ${HOURS} * 3600 + ${MINUTES} * 60 ) ))

答案 1 :(得分:0)

date [-u|--utc|--universal]返回UTC表示,而date返回系统关于夏令时(夏令时)的本地时间。

示例(假设2016-06-01在DST内):

从您的时区获取当地时间(格林威治标准时间+ 1日为DST)

$ date -d '2016-06-01 02:00:00+0200' +'%s = %Y-%m-%d %H:%M:%S'
1464739200 = 2016-06-01 02:00:00

从您的时区获取UTC(纪元)(格林威治标准时间+ 1日为DST)

$ date -u -d '2016-06-01 02:00:00+0200' +'%s = %Y-%m-%d %H:%M:%S'
1464739200 = 2016-06-01 00:00:00