![使用先前日期执行的内容解析日期会出现错误](https://linux22.com/image/117761/%E4%BD%BF%E7%94%A8%E5%85%88%E5%89%8D%E6%97%A5%E6%9C%9F%E6%89%A7%E8%A1%8C%E7%9A%84%E5%86%85%E5%AE%B9%E8%A7%A3%E6%9E%90%E6%97%A5%E6%9C%9F%E4%BC%9A%E5%87%BA%E7%8E%B0%E9%94%99%E8%AF%AF.png)
我在使用 date 命令时遇到了一些麻烦。以下执行会出现错误:
danilo@desktop:~$ x=$(date -d "+60 seconds"); dt=$(date -d "$x")
date: invalid date ‘Mo 11. Sep 09:07:05 CEST 2017’
这很奇怪,因为它可以在我测试的其他计算机上运行。甚至这个:
danilo@desktop:~$ x=$(date); dt=$(date -d "$x")
date: invalid date ‘Mo 11. Sep 09:06:43 CEST 2017’
产生错误。
出现这个错误的原因是什么?是时区设置吗?我怎样才能让它发挥作用?
答案1
迄今为止,不支持您的区域设置的默认格式作为输入。解决方案是使用某种标准格式。例如:
x=$(date -d "+60 seconds" +%s); dt=$(date -d "@$x")
+%s
告诉date
返回标准 Unix 格式:自纪元以来的秒数。
登录@
指示date -d "@$x"
将date
其解释$x
为自纪元以来的秒数。