我在使用 date 命令时遇到了一些麻烦。以下执行发出错误:
danilo@desktop:~$ x=$(date -d "+60 seconds"); dt=$(date -d "$x")
date: invalid date ‘Mo 11. Sep 09:07:05 CEST 2017’
Run Code Online (Sandbox Code Playgroud)
这很奇怪,因为它可以在我测试过的其他计算机上运行。甚至这个:
danilo@desktop:~$ x=$(date); dt=$(date -d "$x")
date: invalid date ‘Mo 11. Sep 09:06:43 CEST 2017’
Run Code Online (Sandbox Code Playgroud)
产生错误。
这个错误的原因是什么?是时区设置吗?我怎样才能让它工作?
迄今为止,不支持您的语言环境的默认格式作为输入。解决方案是使用一些标准格式。例如:
x=$(date -d "+60 seconds" +%s); dt=$(date -d "@$x")
Run Code Online (Sandbox Code Playgroud)
+%s
告诉date
返回标准的 Unix 格式:自纪元以来的秒数。
该@
符号date -d "@$x"
告诉date
解释$x
为秒纪元以来。