我有日期的格式如下这是一个数据库查询结果:
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等基于的小时,分钟和秒的数目。
只需要调整分隔一下:
$ date -d "$(sed 's/-/ /3; s/\./:/1; s/\./:/1' <<< $myDate)" +%s
1396062304
第三个连字符更改为一个空间,然后第一个点更改为一个冒号,然后更改(现在的)第一个点到一个冒号。
然后
$ echo $(( ( $(date +%s) - $(date -d "$( sed 's/-/ /3; s/\./:/1; s/\./:/1' <<< $myDate)" +%s) ) /(24 * 60 * 60 ) ))
2
你必须使用日期-f指定输入格式。 例如
date -d -f %Y-%m-%d-%h.%m.%S.?????? "$PmyDate}" +%s
(我不知道MMMMMM指定的)这种格式是使用strptime功能; 该基准是http://pubs.opengroup.org/onlinepubs/009695399/functions/strptime.html 。