LoginSignup
8
3

More than 5 years have passed since last update.

Calendar.MONTHは0から始まる

Posted at

Calendarクラスの月が「0」から始まるのは何故?

ある日、なんでmonthがひと月ズレるのかって話になりました。

int month = Calendar.getInstance().get(Calendar.MONTH);

このコードを実行したのが2月だと、monthは「1」になります。
「0」から始まるからだよって答えると、何故「0」からなのか、不便じゃない?
って話になりました。
今まで意識してなかったのですが、言われてみると「0」から始まるのはおかしい!
って気になり、知ってそうな方に聞いてみたところ、

日本は月を数えるとき、「1月、2月、3月・・・」というように表現するけど
英語圏は、数字じゃなくて「January、February、March・・・」と文字で表現するから
配列とかプログラムで管理しやすいように「0」始まりにしてるのでは?

という回答を頂き、これが正しいのか分からないけど、なるほど!と思いました。
ネットでも調べてみると、同じような疑問と回答がありました。

私が主に担当しているシステムは、未だにJava5や6で動いているため、
現在の「月」を取得したい場合、下記のように記載する事が多いです。

int month = Calendar.getInstance().get(Calendar.MONTH) + 1;
System.out.println(month + "月");

Java8以降であれば、LocalDateクラスを使うことで「+1」を書かずに現在の「月」を取得できます。

int month = LocalDate.now().getMonthValue();
System.out.println(month + "月");
8
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
3