我已经搜索了我的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}
Thu Mar 29 07:13:55 BST 1973
Thu Mar 29 07:28:20 BST 1973
甚至改变它以将年份添加到两个
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
答案 0 :(得分:1)
日期的-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
结果以秒为单位。