如何在bash shell中将日期时间字符串转换为整数

时间:2013-04-08 02:46:05

标签: shell

给定像'2013-04-06'之类的字符串,我想将它转换为整数,就像我们在Java中所做的那样。我不知道如何在bash shell中执行此操作。有人知道怎么做吗?谢谢你的帮助。

3 个答案:

答案 0 :(得分:6)

date --date="Wed Mar 13 00:18:06 2013" '+%s'
date --date="2013-04-06" '+%s'

仅适用于gnu日期。

答案 1 :(得分:4)

要获得秒和纳秒,您可以使用日期命令。

date -d "2013-04-06" "+%s.%N"

1365224400.000000000

您可以调整格式并截断输出,例如,省略小数,只使用纳秒的前三个字符来提供毫秒。

date -d "2013-04-06" "+%s%N" | cut -b1-13

1365224400000

答案 2 :(得分:2)

由于没有具体提及与Java的互操作性,您可以考虑从值中删除破折号和其他字符以获得与您的值一致的整数。

假设在必要时存在前导零(并且它们在您的示例中),这将为您提供符合日期和时间的总顺序关系的数字,并且它可以说比Java的相当任意“毫秒数”更好自1970年以来“。此外,这是人类可读的,它实际上是ISO 8601标准格式的日期。

并且,要获得完整答案:

date_time="2013-04-06 00:00:01"
integer=$(echo "$date_time" | sed 's/[^0-9]//g')