認識できない形式の日付と時刻が与えられた場合、その日付と時刻をどのようにdate
認識できますか?date
たとえば、
$ date -d "09SEP2012:23:58:46"
date: invalid date `09SEP2012:23:58:46'
$ date -d "09SEP2012:23:58:46" --magic-option "ddMMMYYY:hh:mm:ss"
Sun Sep 9 23:58:46 MDT 2012
存在しますか--magic-option
?そうでなければ、sed
入力を正しい形式の日付文字列に変換するよりも、この問題を解決するためのよりエレガントな方法はありますか?
答え1
POSIXやGNU Date --magic-option
FreeBSDはそれを呼び出しません(提案された構文ではなく出力書式指定子に-f
似た構文で)。date
あなたの日付がGNU Dateで認識されるのに非常に近いです。やるべきことは、日付と時刻を区切るコロンを空白に置き換えることだけです。
date -d "$(echo "09SEP2012:23:58:46" | sed 's/:/ /')"
答え2
答え3
すでにインストールされているUbuntuなどの環境を使用している場合は、次の手順をbusybox
実行できます。busybox date -D "$input_format" -d "$input"
$ busybox date -D "%m/%d/%Y %H:%M:%S" -d "02/27/2013 23:48:00"
Wed Feb 27 23:48:00 CST 2013
出力文字列の形式を次のように指定する場合何か非標準的なものbusybox date -D "$input_format" -d "$input" +"$output_format"
たとえば、次のように出力形式を指定できます。
$ busybox date -D "%m/%d/%Y" -d "02/27/2013" +"%d.%-m.%y"
27.2.13
ただし、ISO-8601準拠の日付の場合は、-I
希望の精度レベルを使用してください。たとえば、次のようになります。
$ busybox date -D "%m/%d/%Y %H:%M:%S" -d "02/27/2013 23:48:00" -Iseconds
2013-02-27T23:48:00-0600
ノート
これビジーボックスのマニュアルページ。これ動作しない可能性があります%Z
タイムゾーン形式があります。