Month is not printed from a date - Java DateFormat
Solution 1:
This is because your format is incorrect: you need "MM/dd/yy"
for the month, because "mm"
is for minutes:
DateFormat inputDF = new SimpleDateFormat("MM/dd/yy");
Date date1 = inputDF.parse("9/30/11");
Calendar cal = Calendar.getInstance();
cal.setTime(date1);
int month = cal.get(Calendar.MONTH);
int day = cal.get(Calendar.DAY_OF_MONTH);
int year = cal.get(Calendar.YEAR);
System.out.println(month+" - "+day+" - "+year);
Prints 8 - 30 - 2011
(because months are zero-based; demo)
Solution 2:
First, you used mm
in your date format, which is "minutes" according to the Javadocs. You set the minutes to 9
, not the month. It looks like the month defaults to 0 (January).
Use MM
(capital 'M's) to parse the month. Then, you will see 8
, because in Calendar
months start with 0, not 1. Add 1
to get back the desired 9
.
The first month of the year in the Gregorian and Julian calendars is JANUARY which is 0
// MM is month, mm is minutes
DateFormat inputDF = new SimpleDateFormat("MM/dd/yy");
and later
int month = cal.get(Calendar.MONTH) + 1; // To shift range from 0-11 to 1-12
Solution 3:
If you read the SimpleDateFormat
javadoc, you'll notice that mm
is for minutes. You need MM
for month.
DateFormat inputDF = new SimpleDateFormat("MM/dd/yy");
Otherwise the format doesn't read a month
field and assumes a value of 0
.