愚痴
ご存じCalendarクラスの月の仕様。
Calendar cal = Calendar.getInstance(); int month = cal.get(Calendar.MONTH) + 1;. //月は0オリジン(0∼11が返ってくるので+1する)
こうやってコメントしていても、暫くすると忘れて結局加算するのを忘れる。本当に嫌な仕様だ。
そもそもどうしてこういう仕様にしてるんだっけか?
一説にはtime.hのtm構造体メンバtm_monに習っているらしい。
- time.h
struct tm { int tm_sec; // 秒 (0から59) int tm_min; // 分 (0から59) int tm_hour; // 時 (0から23) int tm_mday; // 日 (1から31) int tm_mon; // 月 (0から11) int tm_year; // 年 (年 - 1900) int tm_wday; // 週 (0から6) int tm_yday; // 経過日数 (0から365) int tm_isdst; // 夏時間 };
日には誰も突っ込まないのね。
それにしてもCalendarクラスにした時点で-1を打ち消そうという考えは無かったのか? あ、違うか。少なくともプログラマにとっては0オリジンの方が直感的だったということか。
こんなのも出ているんだな。
jsr-310 JSR-310 Date and Time API - Home page