nyagos で %date% の展開ができないというご指摘を耳にした。
もともと %CD% とか %ERRORLEVEL% みたいに「本当は環境変数ちがうけど、環境変数みたいに展開できる動的変数」はサポートしていたんだけど、%DATE% や %TIME% は未対応だった。
というわけで実装しようとしたんだけど、その途中、気づいてしまった。
- これ地域によって、展開の仕方違うんじゃね?
ググってみたところ、どうやら レジストリの HKEY_CURRENT_USER\Control Panel\International\sShortDate
という場所に、フォーマットが格納されているようだ。そこで、これを読みだした結果に
var table = strings.NewReplacer( "yyyy", "2006", "MM", "01", "dd", "02", "d", "2", "M", "1", "H", "15", "mm", "04", "ss", "05", )
というテーブルで置換を施して、レイアウト文字列を作った。
あとは、time.Now().Format( layout )
みたいにして、今日の日付を作ればよいだけ!
なお、%TIME% の方は、レイアウトが入っている場所が見つからなかったので、安易だが time.Now().Format("15:04:05.00")
を返すようにした。
本修正は一応コミット済みだけど、バグ修正による緊急リリースがない限りはバイナリリリースに反映されるのは当面先の予定。