Featured image of post Leap Year

Leap Year

今年は閏年。2月が29日まである。

日付周りのプログラミングは厳密にやろうとすると、それなりにややこしいというのは有名な話。

西暦では1582年や1752年に存在しない日付1がある。

業務システムで中世や近世の日付を扱うことはないが、閏年は4年おきにやってくるので気に留めておかねばならない。

閏年を判定するスマートなコードを職場で教えてもらい感動した。 以下はJavaScript。

1
2
3
4
5
6
7
8
new Date(2023, 2, 0).getDate() === 29;
// => false (2023年は閏年ではない)

new Date(2024, 2, 0).getDate() === 29;
// => true (2024年は閏年である)

new Date(2100, 2, 0).getDate() === 29;
// => false (2100年は閏年ではない)

JavaScript組み込みの Date クラスにおいて、当該年の2月の最終日が29日となっているか否かを判定するコードとなっている。

※2100年は4で割り切れるが100でも割り切れるため閏年ではなくなる

日付として0を指定すると、その月の最終日が指定されるらしい。 組み込みクラスを使うことで車輪の再発明をせずに済むし、それによって良からぬバグを埋め込んでしまうこともなくなる。

Built with Hugo
Theme Stack designed by Jimmy