%m%d%Y 形式の文字列を日付に変換したいと思います。
ただし、以下のように誤った日付エラーが発生します。
bash-4.1$ date -d '10042015' +"%m%d%Y"
date: invalid date `10042015'
どうすれば修正できますか?
答え1
このdate
+
オプションは次のように設定されます。出力入力ではない形式です。まず、別のツールを使用するか、文字列形式を指定する必要があります。
date --date="$(sed 's/^\([0-9][0-9]\)\([0-9][0-9]\)\([0-9][0-9][0-9][0-9]\)$/\3-\1-\2/' <<< '10042015')"
または
date --date="$(sed 's/\(..\)\(..\)\(....\)/\3-\1-\2/' <<< '10042015')"
または単に
date --date="$(sed 's/\(.*\)\(....\)$/\2\1/' <<< '10042015')"
(ありがとうございます。@コスタス)。 2番目の2つは短いですが、次の理由で最初のものをお勧めします。
- サードパーティ製のツールやユーザーの文字列を処理するときに、より厳格で奇妙なバグを防ぎます。さらに重要なこと
- コードが行うことがより明確であるため、メンテナンスは簡単です(最後の4文字を文字列の先頭に移動するのではなく、3つの数字を並べ替え、数字の間にハイフンを入れます)。