epochタイムスタンプで文字列日付を変換する正しい構文が見つかりません。
スクリプトは次のとおりです。
date -d '2012-03-02 22:00 EDT' +%s
DATEJ=`echo -n \'2012-03-02 22:00\'`
echo $DATEJ
date -d $DATEJ EDT +%s
明らかにする
[gg@raspi8 ~]$ CNVDATTS
1330740000
'2012-03-02 22:00'
date: opérande supplémentaire « EDT »
Saisissez « date --help » pour plus d'informations.
何が問題なの?
変数がDATEJ
最初の行の文字列と同じ値を提供していないようです。を書かないとEDT
エラーは同じですが、言及してください+%s
。
答え1
ここで問題は一重引用符のようです。$DATEJ
。あなたの変数はこれを課します。
それに変える
DATEJ=`echo -n "2012-03-02 22:00"`
そして最後のコマンドで:
date -d "$DATEJ EDT" +%s
これは働きます:
$ date -d '2012-03-02 22:00 EDT' +%s
1330740000
$ DATEJ=`echo -n "2012-03-02 22:00"`
$ echo $DATEJ
2012-03-02 22:00
$ date -d "$DATEJ EDT" +%s
1330740000
編集する
echo
実際にスクリプトが強制的に指定しない限り、日付は必要ありません。$DATEJ
単に次のように表現できます
DATEJ="2012-03-02 22:00"
答え2
次のことがあなたや他の人が解決策を見つけるのに役立つことを願っています。
日付文字列は、形式mm/dd/yyyy hh:mm:ss zzz
またはそれに対応する形式にすることができます。例:"06/10/2021 21:00:00 EST"
または"06/10/2021 09:00:00 EST"
TZデータはオプションです。
次のコマンドを実行して、エポックタイムスタンプをインポートできます。
date -d "06/10/2021 00:00:00 EST" +"%s"
または
文字列を変数に渡すことができます。たとえば、次のようになります。
date_string="06/10/2021 00:00:00 EST"
date -d "$date_string" +"%s"
特定の問題については、以下が機能します。
date -d '2012-03-02 22:00 EDT' +%s
DATEJ=`echo -n "2012-03-02 22:00"`
echo $DATEJ
date -d "$DATEJ EDT" +%s