[俺日記]

Panther TIPS #4 / 2004-01-15 (木)

言語環境(International)PreferencePaneでは、日付や時刻の書式を変更できる。しかし、日本語環境ではこの書式を設定する部分にバグがあり、希望する書式に出来ないことがある(Pantherが出た直後にフィードバックしたんだけどねえ......)。

具体的には、日付のカスタマイズで月のあとにつける文字(列)を、「月」が含まれないものにすると、月を表す数字のあとに「月」の字が入ってしまう、というものだ。/でも-でも同じ。ちょっとわかりにくいか。例を挙げよう。

  • 接頭辞→なし
  • 年→-
  • 月→-
  • 日→スペース
  • 曜日→なし
  • 日に0を→つける

としたとき、期待される表示は

2004-1-02 金曜日

だが、実際に表示されるのは

2004-1-02 金曜日

となる。

これを直すには、~/Library/Preferences/.GlobalPreferences.plistに保存されている書式を直す必要がある。まぁエディタで直してもいいんだけど、せっかくだから(謎)defaultsコマンドを使ってみよう。

% /usr/bin/defaults read "Apple Global Domain" AppleICUDateFormatStrings
{
        1 = "yyyy'-'MM'-'dd";
        2 = "yyyy'-'MMM'-'dd' '";
        3 = "yyyy'-'MMMM'-'dd' '";
        4 = "yyyy'-'MMMM'-'dd' 'EEEE";
}

上の例と同じ状態に設定してあるとこのように表示されるはずだ。1がもっとも短い形式、4がもっとも長い形式だ。これを見ると、MMMMだと月が付くのだな、とわかる。シンプルなMMがいいかな。MMではなくMとすると、1桁の月には0が付かなくなる。dも同様。あと、曜日が表示されないのに日のあとにスペースが入るのは嫌なのでそれもついでに変更しよう。そうすると1から3は同じになってしまうんだが(笑)。

なお、H,m,s,Sでそれぞれ時分秒および100分の1秒を記述することが出来る(が、Finderで4番の書式にまで表示領域を拡大すると時刻表示が二重になってしまうので注意が必要)。

% /usr/bin/defaults write "Apple Global Domain" AppleICUDateFormatStrings -dict 1 "yyyy'-'MM'-'dd" 2 "yyyy'-'MM'-'dd" 3 "yyyy'-'MM'-'dd" 4 "yyyy'-'MM'-'dd' 'EEEE"

確認してみよう。

% /usr/bin/defaults read "Apple Global Domain" AppleICUDateFormatStrings
{
        1 = "yyyy'-'MM'-'dd";
        2 = "yyyy'-'MM'-'dd";
        3 = "yyyy'-'MM'-'dd";
        4 = "yyyy'-'MM'-'dd' 'EEEE";
}

この書式で表示するためには起動してあるアプリケーションを再起動すればよい。ログアウトでも構わないはずだ。