date コマンドと短い形式の日付

通常、コマンドプロンプトで date コマンドを実行すると短い形式(short date format)の日付文字列が表示される。
日付の短い形式は、 WindowsXP の場合、コントロールパネル -> 地域と言語のオプション -> [地域オプション]タブのカスタマイズボタンを押下 -> 地域のオプションのカスタマイズ -> [日付]タブ、で設定できる。
この値はレジストリの HKEY_CURRENT_USER\Control Panel\International\sShortDate に保存される。
日本語の WindowsXP ではデフォルトは「yyyy/MM/dd」だ。


さて、基本的に date コマンドの出力は短い形式の書式に従うのだが、微妙に差が生じる場合がある。
日と月の書式には二桁表示を強制するもの(「dd」と「MM」)とそうでないもの(「d」と「M」)があるのだが、どちらを指定しても date コマンドの結果は必ず二桁で表示される。


そしてもう一つ、おかしな副作用が存在する。
書式中で日の書式に「d」を指定した場合、date コマンドを実行するとなぜか曜日も出力されるようになるのである。
例えば、書式を「yyyy/MM/d」と設定している状態では以下のような結果になる。


C:\>date /t
2006/01/31 火
本来、曜日を出力するには「ddd」という指定が必要なのだが「d」を指定するとこのように勝手に出力されてしまうようだ。


なお、この曜日の表示だがコードページによって出力位置が変わる。
コードページ 932 の場合は上記例のように日付の右側に出力されるが、コードページ 437 の場合は日付の左側に出力される。