?
Solved

Java Calendar And SimpleDateFormat Month Problem

Posted on 2009-04-08
4
Medium Priority
?
1,701 Views
Last Modified: 2013-11-23
The month seems to come out wrong when using SimpleDateFormat on my Calendar object.  
What am I doing wrong?  When I run my code my results are ...

Sent Date: 05/08/2009
cal.get(Calendar.YEAR): 2009
cal.get(Calendar.MONTH): 4
cal. get(Calendar.DAY_OF_MONTH): 8
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.TimeZone;
 
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, 2009);
cal.set(Calendar.MONTH, 4);
cal.set(Calendar.DAY_OF_MONTH, 8);
cal.set(Calendar.HOUR_OF_DAY, 10);
cal.set(Calendar.MINUTE, 10);
cal.set(Calendar.SECOND, 10);
cal.set(Calendar.MILLISECOND, 222);
cal.setTimeZone(TimeZone.getTimeZone("GMT-05:00"));
 
String sentDate = "";
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy");
if (cal.getTime() != null) {
   sentDate = sdf.format(cal.getTime());
}
	    	
System.out.println("Sent Date: " + sentDate);
System.out.println("cal.get(Calendar.YEAR): " + cal.get(Calendar.YEAR));
System.out.println("cal.get(Calendar.MONTH): " + cal.get(Calendar.MONTH));
System.out.println("cal.get(Calendar.DAY_OF_MONTH): " + cal.get(Calendar.DAY_OF_MONTH));

Open in new window

0
Comment
Question by:jeffman38
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
4 Comments
 
LVL 1

Assisted Solution

by:isarasoo
isarasoo earned 100 total points
ID: 24098497
what values are you getting back fro the month?
tell us what your inputting and the output

Just so you know the months start from 0 i.e.:
jan=0
0
 
LVL 3

Accepted Solution

by:
NahThenLad earned 400 total points
ID: 24098640
Java sets the months internally with January being 0. When you format the date, Java will display the date in a friendly format, so the numbering gets sorted out to what would be expected from a date, with January being 1 and so on.

You are outputting the date you have formatted as a SimpleDateFormat then outputting the internal value that is being held in the data fields of the calender object you have created, so the values appear to be different, but they are the same.

HTH

Tony
0
 

Author Closing Comment

by:jeffman38
ID: 31568069
Thanks, months start at zero is silly, but what was causing my problem.
0
 
LVL 1

Expert Comment

by:isarasoo
ID: 24099720
in order to fix your issue whatever month you send i.e. 05/08/2009
you will need to dectrement the month field by one
0

Featured Post

Get 15 Days FREE Full-Featured Trial

Benefit from a mission critical IT monitoring with Monitis Premium or get it FREE for your entry level monitoring needs.
-Over 200,000 users
-More than 300,000 websites monitored
-Used in 197 countries
-Recommended by 98% of users

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This was posted to the Netbeans forum a Feb, 2010 and I also sent it to Verisign. Who didn't help much in my struggles to get my application signed. ------------------------- Start The idea here is to target your cell phones with the correct…
Java Flight Recorder and Java Mission Control together create a complete tool chain to continuously collect low level and detailed runtime information enabling after-the-fact incident analysis. Java Flight Recorder is a profiling and event collectio…
Viewers will learn about the different types of variables in Java and how to declare them. Decide the type of variable desired: Put the keyword corresponding to the type of variable in front of the variable name: Use the equal sign to assign a v…
The viewer will learn how to implement Singleton Design Pattern in Java.
Suggested Courses
Course of the Month14 days, 8 hours left to enroll

770 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question