0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

12時間制の正午の考察から、インド人が凄いと思うに至るまで

Last updated at Posted at 2022-06-10

正午は、何時?

訳あって、12時間制の時間を取得するという処理が必要になった。
こんなの簡単だろうと思ったわけです。
要は、時間を12で割った余りを取得すればよいと・・・

Excel VBA
intHour = Hour(Now()) Mod 12

さて、確認のために Excel の条件書式で表示した内容と比べてみます。
時刻を12時間表記するには、以下の様に書式設定ます。
yyyy/mm/dd AM/PM hh:mm:ss

この書式を使って、2022/06/10 00:00:00を12時間制で表示すると2022/06/10 AM 12:00:00に・・・
???AM 12時???
あぁ、あれでしょ、日本と海外じゃ違うからね。
じゃあ、条件書式を[$-ja-JP]yyyy/mm/dd AM/PM hh:mm:ssにしてみたらどうよ。
2022/06/10 午前 12:00:00
・・・えー、マジですか・・・

私はテレビは持っていませんが(だから受信料は払ってませんが)、Echo Dot でNHKラジオのニュースは聞くんです。
ニュースの更新が追い付いていないのか、朝7時頃に聞くと、夜中のニュースが流れるのですが、その時のアナウンスは

「午前0時になりました、NHKのニュースをお伝えします」

と言う感じで始まります。
ちなみにExcelでは24時間制で言う所の12時(正午)は2022/06/10 午後 12:00:00です。
つまり、Excel上での12時間制表記には「午前0時」や「午後0時」は存在しない!?

ゼロを発見したインド人は凄い

いや、まぁ、Excel の12時間制で 0時 が出てこないのは、そういう理由じゃないでしょうね。
そも、ゼロを発見したのがインド人じゃないかもしれませんし・・・

余談

先ほど、商の余りを求めるのにmodを使いましたが、それと並んで便利な演算子が\(バックスラッシュ、日本語フォントだと¥)です。
整数の商を求めます。
以下の様に、時間の前に「AM・PM」や「午前・午後」を付けるのも、「\」を使えば簡単にできます。

Excel VBA
strHour = IIf(Hour(Now()) \ 12 = 1, "午後", "午前") & CStr(Hour(Now()) Mod 12)

バックスラッシュだと普段除算に使う「/」と形が似ているので、覚えやすいですよね。
日本語の「¥」はこういう時ちょっとどうかと思うけど・・・

さらに余談

たかだか 12時間制の時間を取得する だけで、「(24時間制の)0時と12時の時、どうするんですか?」と仕様を確認しなきゃいけないの、面倒。
その前に、何で24時間制にしなかったのかな、このシステム・・・

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?