在 bash 中将秒数添加到给定日期

在 bash 中将秒数添加到给定日期

我有一个完整的日期以及小时和分钟。我想添加秒数并将结果显示为日期“日.月.年 小时:分钟”。

“日期”似乎无法将秒数添加到给定的日期。

答案1

事实上,GNUdate命令(这是 Ubuntu 中的标准实现)可以直接添加日期偏移量 - 例如将 3662 秒(1 小时,1 分钟,2 秒)添加到给定日期

$ date '+%d.%b.%Y %T' --date="2012-06-13 09:16:16 EDT + 3662 seconds"
13.Jun.2012 10:17:18

但是,时区和夏令时需要小心 - 更安全的选择可能是将原始时间转换为自纪元开始以来的秒数,并在转换回所需格式之前添加所需的偏移量,例如

$ secs=$(date +%s --date="2012-06-13 09:16:16")
$ date '+%d.%b.%Y %T' --date="@$((secs + 3662))"
13.Jun.2012 10:17:18

答案2

您还可以使用以下方式轻松增加当前日期:

date --date="+1 seconds" '+%Y-%m-%d %T'

man date说这在 中有记录info date,但我现在不想阅读info手册来引用它:-)

在 Ubuntu 18.04 中date从 Coreutils 8.28 进行测试。

答案3

像这样:

$ date +%x.%H:%M:%S:%N
01/21/2014_16:02:07:422856522

它为我显示了美国风格的数据,但看到授权以进一步完善。以下 2 个有趣的选项:

%N     nanoseconds (000000000..999999999)
%S     second (00..60)

如果您想使用标准年、月、日格式:

$ date +%Y.%m.%d_%H:%M:%S:%N
2014.07.21_16:07:52:641771706

相关内容