如何使用 Bash 将时间戳转换为 Unix 纪元时间

如何使用 Bash 将时间戳转换为 Unix 纪元时间

我有一个与此类似的时间戳:2022-11-09T14:41:15.555641007Z

我想将其转换为以秒为单位的 Unix 纪元时间,如下所示:1668005090

我怎样才能实现这个使用

答案1

像这样(假设 GNU 或 ast-open 实现date):

$ date -d '2022-11-09T14:41:15.555641007Z' +%s
1668004875

答案2

在 macOS 上,假设输入已知为 UTC:

% t='2022-11-09T14:41:15.555641007Z';
% date -j -f "%Y-%m-%dT%H:%M:%S%z" "${t%.*}+0000" +%s                          
1668004875

删除${t%.*}+0000纳秒和Z标记,并添加+0000时区标记,因为这是所%z期望的。

如果不是 UTC,您需要将其转换为之前的格式,然后使用它。2022-11-09T14:41:15+hhmmdate -j -f "%Y-%m-%dT%H:%M:%S%z" "$t" +%s

的选项为FreeBSD 版本date看起来很相似,所以这也可能适用于那里。

相关内容