巴什多少天以来(Bash how many days since)

2019-10-19 17:59发布

我有日期的格式如下这是一个数据库查询结果:

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等基于的小时,分​​钟和秒的数目。

Answer 1:

只需要调整分隔一下:

$ 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


Answer 2:

你必须使用日期-f指定输入格式。 例如

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

(我不知道MMMMMM指定的)这种格式是使用strptime功能; 该基准是http://pubs.opengroup.org/onlinepubs/009695399/functions/strptime.html 。



文章来源: Bash how many days since
标签: linux bash shell