在bash中为给定日期添加秒数

Mar*_*kus 8 time bash scripts date

我有一个完整的日期加上小时和分钟。我想添加一些秒数并将结果显示为日期“day.month.year hours:minute”。

“日期”似乎无法为给定日期添加秒数。

ste*_*ver 15

事实上,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
Run Code Online (Sandbox Code Playgroud)

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

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


Cir*_*郝海东 7

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

date --date="+1 seconds" '+%Y-%m-%d %T'
Run Code Online (Sandbox Code Playgroud)

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

在 Ubuntu 18.04、dateCoreutils 8.28 中进行了测试。


Rin*_*ind 3

像这样:

$ date +%x.%H:%M:%S:%N
01/21/2014_16:02:07:422856522
Run Code Online (Sandbox Code Playgroud)

它为我显示了美国风格的数据,但请参阅man date以获得更多细化。两个有趣的选项:

%N     nanoseconds (000000000..999999999)
%S     second (00..60)
Run Code Online (Sandbox Code Playgroud)

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

$ date +%Y.%m.%d_%H:%M:%S:%N
2014.07.21_16:07:52:641771706
Run Code Online (Sandbox Code Playgroud)

  • 因为我可以@wilf 他说:不能添加秒。我说:是的,甚至纳秒:+) (2认同)