我试图从bash的epoch获取当前日期/时间秒。 我用
做到了date +%s
但这并不能解决我的时区和夏令时问题。
喜欢的东西 1)获得时代 2)增加3600(我在罗马,我是GMT + 1) 3)仅在我们夏令时时添加3600
在bash中有可能吗?
答案 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