shell 中日期与时间的运算

2023-02-18  本文已影响0人  AibWang

格式化输出


字符串解析为日期

date -d '日期字符串'

date -d '2023-01-03 12:12:30.03'
date -d '2023-01-03T12:12:30.03Z'
date -d 'Jul 9 2008 08:12'
date -d 'Nov 10'

日期与时间的格式化输出

date +'格式化字符串'

date +'%Y-%m-%d %H:%M:%S.%N'
date +'%Y-%m-%d %H:%M:%S.%N' -d 'Jul 9 2008 08:12'
date +'%j'
date +'%j' -d 'Nov 13, 2009'

时间的加减

1、通过关键字直接用字符串解析(date -d

如在2023-02-19 17:36:20时间点进行加减

date -d '2 day 2023-02-19 17:36:20'

该命令得到2023-02-19 17:36:20加2天的结果。

date -d '-2 day 2023-02-19 17:36:20'

该命令得到2023-02-19 17:36:20减2天的结果。

同理,通过关键字 second, minute, hour, day, month, year 可以对时间进行加减计算

date -d '-2 hour 2023-02-19 17:36:20'

该命令得到2023-02-19 17:36:20减2小时的结果。

2、将日期转换为时间戳,而后进行加减(结果以秒为单位)

Note: 时间戳是以1970-01-01 00:00:00为基准的秒数

t1=$(date +'%s' -d '2022-01-19 17:30:20.03')
t2=$(date +'%s' -d '2022-01-10 18:30:20.03')
awk -v t1=$t1 -v t2=$t2 'BEGIN{dt=t1-t2; print dt;}'

如果要获得精确计算,转换为时间戳时可以带上纳秒 date +'%s.%N'

如果要将时间戳转换为日期,格式如下:

date -d "@1676800331.2197"

同样的也可以加上格式化输出的定义。

date +'%Y-%m-%d' -d "@1676800331.2197"

获取两个时间戳的差(和)之后,通过简单的数学运算即可获得相差的天,小时,分,秒等。

上一篇下一篇

猜你喜欢

热点阅读