2017-03-03 15 views
0

date +"%Y%m%d%H"を使用して文字列を生成し、同じ文字列を読み込んで日付として変換しています。どういうわけか逆は働いていません。 %Yは最初の6文字として扱われますシェルで文字列を日付に正しくフォーマットする方法

# date +"%Y%m%d%H" 
2017030216 

# date -d 2017030215 +%Y 
201703 

# date -d 2017030215 +%m 
02 

なぜこれは2017を返しますか?

答えて

2

無効な文字列を-dに渡しています。つまり、予期しない形式の文字列です。そのフォーマットのドキュメントはここにある:https://www.gnu.org/software/coreutils/manual/html_node/Date-input-formats.html

「2017030215」は、ほとんどのシステムで有効な日付/時刻文字列ではなく、date -dも例外ではありません。 date -dがあなたの文字列をどのように解釈しているかを見たい場合は、+オプションを付けずに実行して、完全な出力を確認してください。あなたはおそらく驚くでしょう。

関連する問題