Calendar class time month not matching

2020-04-15 05:28发布

问题:

Calendar c = Calendar.getInstance();

System.out.println("Mili->>" + c.getTimeInMillis());

System.out.println("Month  ->>" + Calendar.MONTH);

Though I am getting correct time in millisec format, Month is showing as 2 (March??) Why so?

Below is output

Mili->>1434029840778

Month ->>2

回答1:

What you want is the following idiom: c.get(Calendar.MONTH).

Calendar.MONTH per se is just an internal constant and will (hopefully) always return 2.

Example

// We're in June at the time of writing
// Months are 0-based so June == 5
Calendar c = Calendar.getInstance();
System.out.println(Calendar.MONTH);
System.out.println(c.get(Calendar.MONTH));

Output

2
5

See also: API



回答2:

You are displaying the value of the Calendar.MONTH constant, hence 2.



回答3:

You're getting calendar c from an instance but calendar from month with the Calendar object, get it from the instance too.

Also - Calendar starts from 0 as referenced here

In other news, use the new DateTime API in Java 8 or JODA time, they're much nicer.



标签: java calendar