Java Calendar Setting Incorrectly

帅比萌擦擦* 提交于 2019-12-02 05:48:22

months are indexed 0-11 instead of 1-12.
0 = January
1 = February
...
11 = December
Use tmpMonth = value -1 instead.

I believe the month's value starts at 0 rather than 1 so it interprets 0 as Jan, 1 as Feb ... and then Jan again as 12.

From the API:

month - the value used to set the MONTH time field. Month value is 0-based. e.g., 0 for January.

When you set the Calendar.MONTH field, it is zero-based. {January=0... December=11}

The reason is quite simple: design fault in the Calendar API. That's why the JSR 310 is on its way in order to improve the java support for dates.

Technically, the authors of the class thought it was good to use only static fields. So what you need to do is to use the following:

calendar = ...
calendar.setMonth(Calendar.JANUARY);

They didn't think that people might need dynamic settings to a calendar, just like you need (and most of us, for that matters).

The month values go from 0 (January) to 11 (December). Try using ((int) tmpMonth) - 1 when setting the month to get December.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!