%m%d%Y 形式の無効な日付エラー

%m%d%Y 形式の無効な日付エラー

%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つは短いですが、次の理由で最初のものをお勧めします。

  1. サードパーティ製のツールやユーザーの文字列を処理するときに、より厳格で奇妙なバグを防ぎます。さらに重要なこと
  2. コードが行うことがより明確であるため、メンテナンスは簡単です(最後の4文字を文字列の先頭に移動するのではなく、3つの数字を並べ替え、数字の間にハイフンを入れます)。

おすすめ記事