linux - 在 UNIX 时间戳 Shell/Bash 中使用时区转换日期

标签 linux bash shell unix

我需要将日期从格式为“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/

相关文章:

linux - 为具有管道的 watch 命令添加别名

linux - 一个目录中的所有文件,linux

linux - 解决 mprotect() 系统调用失败

python - GNS3 错误 : WaitForConnectionWorker thread stopping with an error: Could not connect to 127. 0.0.1 在端口 3090 上:[Errno 111] Conexión rehusada

linux - 尝试在 bash 中分割一个大字符串

bash - 使用 wget 下载的新文件列表

bash - 使用 xargs 和 xargs -i 的细微差别

linux - 将 shell 脚本和 zip 文件组合成一个可执行文件以进行部署

php - 使用 PHP 执行 shell 命令

linux - 如何在 Linux 中使用命令锁定显示器?