0

我一直在寻找解决我的 shell 日期减法问题的方法,但没有任何乐趣,所以就到这里了。我有一个日期格式,例如 %m%d%H%M%S,即“0102231203”和第二个 %Y%m%d%H%M%S,我可以从第二个中取出一年并执行正常减法,但是当它超过一天时,时间不正确就会成为问题。这是我迄今为止尝试过的

BTT=0102234500

TPP=0102233635(去掉年份后)

BT=date -d ${BTT}

TP=date -d ${TPP}

BT=date -d $BTT +%m%d%H%M%S

TP=date +%m%d%H%M%S -d ${TPP}

日期:无效日期“0102234500”

日期:无效日期“0102233635”

BT=date -d @${BTT} +%m%d%H%M%S

TP=date +%m%d%H%M%S -d @${TPP}

奇怪的输出

0329071355

0329072820

BT=date -d @${BTT}

TP=date -d @${TPP}

1973 年 3 月 29 日星期四 07:13:55 BST

1973 年 3 月 29 日星期四 07:28:20 BST

甚至将其更改为将年份添加到两者中

BTT=20130102234500

TPP=20130102233635

BT=date -d @${BTT}

TP=date -d @${TPP}

7 月 19 日星期五 08:53:55 GMT 639867

7 月 19 日星期五 09:08:20 GMT 639867

我该如何解决这个问题。tnx

4

1 回答 1

1

date 的 -d 选项接受人类可读的字符串,所以如果你有完整的日期,你可以这样做:

me@server:/tmp$ BTT=`date +"%Y-%m-%d %H:%M:%S"`
me@server:/tmp$ TPP=`date +"%Y-%m-%d %H:%M:%S"`
me@server:/tmp$ echo $((`date -d "$TPP" +%s`-`date -d "$BTT" +%s`))
3

使用您的数据:

me@server:/tmp$ BTT="2013-01-02 23:45:00"                          
me@server:/tmp$ TPP="2013-01-02 23:36:35"                          
me@server:/tmp$ echo $((`date -d "$BTT" +%s`-`date -d "$TPP" +%s`))
505

以秒为单位的结果。

于 2013-01-03T18:41:02.193 回答