西暦1000年って閏年なの? そうじゃないの? (original) (raw)
なんとなく、日付なんてものはすべてのシステムで同じように扱われているべき、と盲目的に思っていたが、そうではないようで・・・
西暦1000年って100で割り切れるけど400で割り切れないから平年だよね? JavaのDate型で2月29日入っちゃうんだけど・・・。
@daiksy 内部的には3月1日になってません?
@mochi_oka なってません・・・。このままDBにinsertすると、mySqlは正しく判定するのでここでエラーに・・・。
@daiksy そもそも閏って1,000年には適用できないと思いますけど。閏自体が西暦1,000年の後に導入されてるはずですし。なので、そこは歴計算のアルゴリズムがどうなってるか、だと思いますけどね。
@_tsq そうなんですねー。MySQLだと、平年で扱われて、システム側のバリデーションと不一致をおこしていたのですが、どちらが正しいというわけではないのか・・・。
@daiksy 暦って、割と最近考えられた合理化する方法ですからねぇ。MySQLとシステムでなんぞ計算方法に不一致があるんでしょう。かといって、そもそもが閏のない時代のことは責められないしw
@_tsq たしかにw これは暦の無い時代の話だw
@daiksy 今の暦って、確か1500年頃からなので、それ以降でないと適用できないはずなんですよねぇ。
1900年とか2100年とかは当然正しく動作するのに、なぜJavaではわざわざ1000年は閏年として扱うんやろか・・・。
おお! 1582年(グレゴリオ暦の採用年)以前はユリウス暦で閏年の計算が実装されてるんか!!!だから1000年は閏年になるんか!!!!
@daiksy Wikipediaも1000年は"西暦(ユリウス暦)による、閏年"と書かれていますね http://t.co/AuY4ICF2nm
@h141gm わ!ほんとだ!!
Javaのバグじゃねーの? とか疑ってごめんなさい・・・。
@daiksy Oracleも1000年2月29日は登録可能ですね
@guin_y なるほどー。
@daiksy @guin_y ついでに、PostgreSQLではMySQLと同じく平年でした(1000年2月29日はinsertできない)
@daiksy 何故PostgreSQLは正しくないグレゴリオ暦を用いるかの公式マニュアルによる解説。(ちょっといいわけくさいw) http://t.co/LM4KdAmL2I
MySQLも
proleptic Gregorian calendar
(先発グレゴリオ暦)とのこと
http://dev.mysql.com/doc/refman/5.1/ja/mysql-calendar.html
反響が大きかったのでブログにまとめました。