以前の日付を使用して日付を解析すると、エラーが発生します。

以前の日付を使用して日付を解析すると、エラーが発生します。

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")

+%sdate標準のUnix形式(epoch以降の秒)を返すように指示します。

ログイン@指示は、それをエポック以降の秒数としてdate -d "@$x"解釈します。date$x

関連情報