年月日と時分秒の書式

Format関数などで日時の書式を表す場合に以下のようなコードを見ることがあります。

“m”が月(month)の部分と分(minute)の両方に使われています。

しかしVBAではちゃんと月と分を区別してくれます。

これはVBAに限らず、一般的な年月日や時分秒の表し方で、どちらにも「m」を使うことがあるため、mmの左右の文字列の内容からVBAでも内部的に判定するためです。

具体的には、時間の”h”や秒の”s”と一緒に使用すると分とみなすようになっています。

mは月、nは分

VBAで内部的にmを親切に解釈してくれますが、正式な書式のルールでは「m」は月を表し、分を表すのは「n」になります。

なお、mm、および、nnと2桁で書くと1桁値の場合に左側に0が付与されます。

そのため、正式な年月日+時分秒の書式は「”yyyy/mm/dd hh:nn:ss”」になります。

Format関数を使うと以下はどちらも同じ時刻を出力します。

 

hh:mm:ssとhh:nn:ssの処理速度の違い

もしかしたらhh:mm:ssとhh:nn:ssでは処理速度に違いがあるのかも、と思って調べてみました。

結果、差はありませんでした。

hh:mm:ssとhh:nn:ssのFormatを500万回ずつ実行してみましたが、0.01秒の差しかなく、誤差の範囲と思います。

実行結果

61973.04
61977.29 (前回から4.25)
61981.55 (前回から4.26)

結論。どっちでもいい

結論。

hh:mm:ssとhh:nn:ss、どっちでもいいです。

私自身、hh:mm:ssで書いてますし。

正式な書式を使いたい場合は、分にはn、を使ってください。