Bash过了多少天

时间:2014-04-01 01:16:09

标签: linux bash shell

我有以下日期格式,即数据库查询结果:

yyyy-mm-dd-hh.mm.ss.mmmmmm

示例

myDate=2014-03-28-23.05.04.000000

我试过

$(( ( $(date +%s) - $(date -d "${myDate}" +%s) ) /(24 * 60 * 60 ) ))

但它给我的日期无效错误。

我想知道自myDate以来已经过了多少天。我需要将结果不向上或向下舍入为例,根据小时数,分钟数和秒数,结果可能是2.5天或1.6等。

2 个答案:

答案 0 :(得分:3)

只需稍微调整分隔符:

$ date -d "$(sed 's/-/ /3; s/\./:/1; s/\./:/1' <<< $myDate)" +%s
1396062304

将第3个连字符更改为空格,然后将第一个点更改为冒号,然后将(现在)第一个点更改为冒号。

然后

$ echo $(( ( $(date +%s) - $(date -d "$( sed 's/-/ /3; s/\./:/1; s/\./:/1' <<< $myDate)" +%s) ) /(24 * 60 * 60 ) ))
2

答案 1 :(得分:2)

您必须使用date -f指定输入格式。例如

date -d -f %Y-%m-%d-%h.%m.%S.?????? "$PmyDate}" +%s

(我不确定mmmmmm指定的内容)此格式使用strptime函数;对此的引用是http://pubs.opengroup.org/onlinepubs/009695399/functions/strptime.html

相关问题