【C#】 DateTime AM/PM表記の備考

f:id:nuakam:20180924103512j:plain

Datetimeの記事は何度目になるんだろう(´ . .̫ . `)

DatetimeのAM PM表記

C#バージョンの問題かもしれませんが、AMPM表記が可笑しいことに気づきました。

AM PM 表記のやりかた

とりあえず24時間表示から12時間表示に変更する方法

DateTime TwentyFour = Datetime.Now    //現在の時刻
string TimesString = TwentyFour.ToString(); //string型へ変換(24時間表示)

string AmPmString = TwentyFour.ToString("hh:mm tt")://12時間表示のstring型へ変換


DateTimeをTostringでstringに変更する際に末尾に【tt】をつけるだけで変更できます。

AM/PM表記の問題

0時~1時、12時~13時のときが変な気がする

ログを見てみるとこうなります。

0時   => 12:00AM
12時 => 12:00PM


感覚的にはこうなってほしい。

0時   => 0:00AM
12時 => 0:00PM


これは何故なんだ。
正しい表記は12スタートなのか、アメリカ式の書き方なのか、DateTimeのバグなのか、謎です。


とりあえずif文で雑な対処でどうにかなりますが、モヤッとします

追記

ちょっと調べたところC#の表記方法が正しかったようです(´ . .̫ . `)

blog.6vox.com

正しい12時間制表記はこのようになります。

00:00 =>12:00 AM
01:00 =>01:00 AM
02:00 =>02:00 AM
03:00 =>03:00 AM
...
10:00 =>10:00 AM
11:00 =>11:00 AM
12:00 =>12:00 PM
13:00 =>01:00 PM
14:00 =>02:00 PM
15:00 =>03:00 PM
...
21:00 =>09:00 PM
22:00 =>10:00 PM
23:00 =>11:00 PM
00:00 =>12:00 AM
01:00 =>01:00 AM


つまり1日は1時基準ということみたいです

いろいろ調べてみると面白いです。
そもそも英語圏では24時間表記が主流でAM/PMなんて使わないみたいですね