Java日历日期错误(Java Calendar date error)

2019-08-01 17:06发布

任何人都可以请帮助我了解为什么我对获得不同的月份值

SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");    
System.out.println(dateFormat.format(cal.getTime()) 
                   + "--" 
                   + cal.get(Calendar.MONTH));

令人惊讶的显示器

09/09/2012--8

Answer 1:

Calendar类, MONTH从指数开始0 。 因此, January是0, February是1,因此September是8。

PS: -这是真的,这是一个InconsistencyCalendar类,所以我建议你看看Joda-Time API使您的生活更容易使用日期时间数据工作时。



Answer 2:

你可能的问题是日历使用几个月从零开始的索引 。 所以,正确的格式输出9九月,但吸气返回8

这是愚蠢和日历的不一致? 是! 使用乔达时API的使用日期和时间,而不是工作。 据我所知,这是目前的事实标准,直到JSR 310恶有恶报。



Answer 3:

基于0的Calendar.MONTH返回值即JANUARY被表示为0。这样,SEPTEMBER是8。



Answer 4:

在日历月开始在0



Answer 5:

其他的答案是正确的。 java.util.Calendar类使用了一个月的数字从零开始计数。 其中的原因是多方面的,以避免使用java.util.Date/Calendar类。

这种工作是比较容易乔达时间 2.3库。 值得庆幸的是它明智使用基于一个计数如一月= 1,十二月= 12。

java.util.Calendar cal = java.util.Calendar.getInstance();

// Though not required here for this one purpose, it's better to specify a time zone than rely on default.
DateTimeZone timeZone = DateTimeZone.forID( "America/Montreal" );
DateTime dateTime = new DateTime( cal.getTime(), timeZone );

// Extract month. Note how these two lines call similar sounding methods that are actually quite different.
// One returns a primitive int value. The other returns an object of nested class DateTime.Property.
int monthNumber = dateTime.getMonthOfYear();
String monthName = dateTime.monthOfYear().getAsText( Locale.FRENCH );

转储到控制台...

System.out.println( "dateTime: " + dateTime );
System.out.println( "monthNumber: " + monthNumber );
System.out.println( "monthName: " + monthName );

当运行...

dateTime: 2014-02-10T02:58:35.386-05:00
monthNumber: 2
monthName: février


文章来源: Java Calendar date error