標準愚痴出力

個人的なIT作業ログです。もしかしたら一般的に参考になることが書いているかもしれません(弱気

%DATE% の展開をサポートした。

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") を返すようにした。

本修正は一応コミット済みだけど、バグ修正による緊急リリースがない限りはバイナリリリースに反映されるのは当面先の予定。