linuxのdateコマンドの日付文字列解釈ルール
解決したいこと
dateコマンドの解釈アルゴリズム、何が「解釈できるのか」を知りたい。
発生している問題・エラー
dateコマンドの-dで入力日付文字列を解釈して文字列変換しようとした。
- 解釈不能な文字列の場合は現時点の日付時刻を使用する
- 解釈可能な文字列の場合はそれを使用する
だが特定の 日付と解釈できるとは思えない 文字列を解釈されている。
解釈された結果は謎のアルゴリズムで(固定の)日付にされているようだ。
以下はVirtualBox上のUbuntu22.04LTS上での実行結果。
user@user-VirtualBox:~/develop/bash$ date -d "AAAAA"
date: `AAAAA' は無効な日付です
user@user-VirtualBox:~/develop/bash$ date -d "x"
2022年 7月 29日 金曜日 20:00:00 JST
user@user-VirtualBox:~/develop/bash$ date -d "X"
2022年 7月 29日 金曜日 20:00:00 JST
user@user-VirtualBox:~/develop/bash$ date -d "XX"
date: `XX' は無効な日付です
user@user-VirtualBox:~/develop/bash$
自分はどうしたいのか?
- 最善はdateコマンドの文字列解釈アルゴリズムの仕様がわかること。
- dateコマンドの「バグか仕様か」がわかること。
- 日付文字列で "x" をはねる方法、"x" だけをはねれば解決するのか?
- ほかにも 変換可能な日付ではない文字列があるのでは? という疑問。
解決 した しなかった
date -d "*"
において、* = 0-9/A-Z/a-z のいずれか1文字であれば変換される。
なぜ変換されるのか?についての仕様はわからない。
1