我需要将日期从格式为“yyyy/mm/dd hh:mm:ss TZ”的字符串转换为 UNIX 时间(TZ = 时区)。
到目前为止,我所做的是使用“yyyy/mm/dd hh:mm:ss”格式将不带时区的日期转换为时间戳
dateYMD="2019/2/28 12:23:11.46"
newt=$(date -d "${dateYMD}" +"%s")
echo ${newt}
我得到了以下结果。
1551349391
我的努力是找到如何将时区和日期/时间转换为时间戳(unix 时间)。例如,我需要 4 个与 dateYMD 具有相同日期/时间但位于 4 个不同时区的变量,以便它们的时间戳不同。
这是我最近尝试过的
dateYMD="2017/09/09 08:58:09"
timez=$(TZ=Australia/Sydney date -d @$(date +%s -d "${dateYMD}"))
unixTimez=$( date --date "${timez}" +"%s" )
echo ${unixTimez}
向我显示了以下错误
date: invalid date ‘чт фев 28 21:23:11 AEDT 2019’
最佳答案
您不需要调用 date
两次。只需将 TZ
设置为该变量所需的时区即可调用一次。
timesydney=$(TZ=Australia/Sydney date -d "$dateYMD" +%s)
timenyc=$(TZ=US/Eastern date -d "$dateYMD" +%s)
关于linux - 在 UNIX 时间戳 Shell/Bash 中使用时区转换日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55768882/