Shell 用特定格式减去日期

Shell 用特定格式减去日期,shell,date,subtraction,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=

我一直在寻找一个解决我的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英国夏令时

1973年3月29日星期四07:28:20英国夏令时

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

BTT=20130102234500

TPP=20130102233635

BT=
date-d@${BTT}

TP=
date-d@${TPP}

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

星期五7月19日09:08:20格林尼治标准时间639867

我如何解决这个问题。
tnx

日期的-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

以秒为单位显示结果。

1。这里有许多关于S.O.的问题与日期算术有关。2.使用适当的shell名称作为问题的标记,您将获得更好的帮助,即
csh
bash
ksh
。。。祝你好运