2

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

4

3 回答 3

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

仅适用于 gnu 日期。

于 2013-04-08T02:52:46.870 回答
5

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

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

1365224400.000000000

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

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

1365224400000
于 2013-04-08T02:52:20.673 回答
2

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

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

而且,要获得完整的答案:

date_time="2013-04-06 00:00:01"
integer=$(echo "$date_time" | sed 's/[^0-9]//g')
于 2013-04-08T03:03:16.563 回答