用特定格式减去日期

时间:2013-01-03 17:05:16

标签: shell date subtraction

我已经搜索了我的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

1 个答案:

答案 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

结果以秒为单位。