多くのプログラミング言語にあるDate型、もしくはDateオブジェクト。
名前がCalendarの場合もあるが、
これらの日付から月を表す整数を返すメソッドは、1月を0で返すものがある!
おもにJavaとJavaScriptだ。
Pythonは1月は1と返してくれる。
こんなケッタイな仕様なので、いちいち1を加算して(month + 1) + “月”というような感じにしなければちゃんとした月にならない。
何考えてこんな仕様になったんだよ。とずっと思っていたのだが……
月に数字なんて無かった説
英語の月ってJan.とかFeb.とかで書く。
そもそもJanuaryに1要素がないし。
もしかしたら、1っていう感じを持っていないじゃないか?
たとえば僕らは日曜日が週の最初で、月曜日が2番目だけれども、
月曜日のことを2曜日とか思っていない!
そういう感覚を持っているんじゃないか?
実は9月 Septemberから 12月 Decemberは、ラテン語における7月から10月に対応している。
septemは7だし、decemは10という意味だ。
色々あって、ずれちゃったけれども、この元々の順番の意味ももう形骸化してしまっている状態は、番号的な意識はもうずいぶん前から無いという証拠になるかもしれない。
そもそも、昔は2月が年末だったそうだ。
3月から1年が始まって、2月が終わり。
ああ、だから10を意味するDecemberが12月なのか、だから2個ずれているのか。
僕は勝手にカエサルとアウグストゥスが7月と8月に押し込まれたからずれたのかと思ってた。
まあ、それはおいといて、順番もバラバラになったくらいもう番号というものは、僕らが曜日について何番目か意識していないのと同じかもしれない!!
だからプログラミング言語で、配列の1番最初を表現する時に0と表現するパターンと同じで、1番最初の月だから0と表現したのかもしれない!!
説実証ならず!!
以上適当に仮説を組み立てていたのだが、早速この説も崩れることになった!
英語でも普通に1月は1って表現するよね。
クレジットカードに月が書いてあるし、そもそも数字で月を表現する表記法も英語でならったよ。
月/日/年と書くので、日本語と順番が違うんだよね。
でも、それでも月は普通に数字でも書くよね…
じゃあ、なんで0始まりなんよ!JavaとJavaScriptの日付!!
本当になんでそうなったんだよ
でもまあJavaはいいよ。DateFormatとか使ってロケールにあわせた日付表現にするからさ…