美文网首页
shell 中日期与时间的运算

shell 中日期与时间的运算

作者: AibWang | 来源:发表于2023-02-18 18:07 被阅读0次

    格式化输出

    • %Y 四位长度的年份
    • %m 两位长度的月份,如02,03,...,12
    • %d 两位长度的天,如01,02,..
    • %H 两位长度的小时(24小时制),如01,02,...,24
    • %M 两位长度的分钟,如01,02,...,59
    • %S 两位长度的秒,如01,02,...,59
    • %N 纳秒(9位),如023000000

    • %j 一年的第多少天,如001,002,...
    • %A 星期几,如Monday, Tuseday, ...
    • %B 月份,如January, Feberary, ...

    字符串解析为日期

    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"

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

    相关文章

      网友评论

          本文标题:shell 中日期与时间的运算

          本文链接:https://www.haomeiwen.com/subject/ghebkdtx.html