QA@IT

正午(午後0時)について

8045 PV

こんにちは。

現在.NET 3.5 C#で開発を行っています。

表題の通り正午表記についての知恵をお借りしたいと投稿させていただきました。

できればDateTime.ToString()なりを用いて午後0時(正午)を表記したいと考えています。

JAVAで言うところの
SimpleDateFormatのパターン文字"K"です。
http://www.javaroad.jp/java_date3.htm

24時間表記(hh:mm)

  • 00:00
  • 01:00
  • 02:00
  • :
  • 11:00
  • 12:00
  • 13:00

に対し
12時間表記(tt ?:mm)

  • 午前 0:00
  • 午前 1:00
  • 午前 2:00
  • :
  • 午前 11:00
  • 午後 0:00
  • 午後 1:00

を出力したい考えです。

最終的には力技で12時の時は0へ強制するコードを追記する必要がありますかね…

回答

これといったスマート(?)な方法は、無さげですよね…

static class DateTimeExtension
{
    public static string To12HourString(this DateTime dt)
    {
        var h = dt.Hour;
        if (h >= 12)
            h -= 12;

        return String.Concat(dt.ToString("tt "), h, dt.ToString(":mm"));
    }
}

みたいな拡張メソッドを用意するくらいでしょうか。

書くまでもなかったと思いますが(^_^;
一例として、ご参考まで。

編集 履歴 (0)
  • そうですね。。。
    DateTimeFormat辺りを自作してやろうかと思いましたが、
    作成コストがよろしくないのであきらめます。。

    hhフォーマット変換の
    DateTimeFormatの内部コードは
    h = hour % 12
    if (h == 0)
    h = 12;
    となっているのでズルいと思いましたが…
    -
ウォッチ

この質問への回答やコメントをメールでお知らせします。