Calendar and Date puzzling question...

A

adam.balgach

So I am trying to take a Date object and convert it into a calendar for
use in my application, the code looks like: The string _s comes in in
the format YYYY-MM-DD this i am 100% sure of



public CalendarInfo(String _s) {
DateFormat _formatter = new SimpleDateFormat("yyyy-MM-dd");
try {
_date = _formatter.parse(_s);
_calendar = new GregorianCalendar();
_calendar.clear();
_calendar.setTime(_date);
_log.log_error(_class, "CalendarInfo():
"+_calendar.toString());
_log.log_warning(_class, ""+_calendar.YEAR);
_log.log_warning(_class, ""+_calendar.MONTH);
_log.log_warning(_class,
""+_calendar.DAY_OF_MONTH);
}
catch (java.text.ParseException Ex) {
_log.log_error(_class, "CalendarInfo(): Bad Parse: "+Ex);
}
}



So what i am doing is passing in a string formatted as "2006-10-12" and
converting it to a calendar and this is the results i get:

[ 10-17-2006 15:11:41 Calendar.CalendarInfo ] ERROR: CalendarInfo():
java.util.GregorianCalendar[time=1160625600000,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="America/New_York",offset=-18000000,dstSavings=3600000,useDaylight=true,transitions=235,lastRule=java.util.SimpleTimeZone[id=America/New_York,offset=-18000000,dstSavings=3600000,useDaylight=true,startYear=0,startMode=3,startMonth=2,startDay=8,startDayOfWeek=1,startTime=7200000,startTimeMode=0,endMode=3,endMonth=10,endDay=1,endDayOfWeek=1,endTime=7200000,endTimeMode=0]],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2006,MONTH=9,WEEK_OF_YEAR=41,WEEK_OF_MONTH=2,DAY_OF_MONTH=12,DAY_OF_YEAR=285,DAY_OF_WEEK=5,DAY_OF_WEEK_IN_MONTH=2,AM_PM=0,HOUR=0,HOUR_OF_DAY=0,MINUTE=0,SECOND=0,MILLISECOND=0,ZONE_OFFSET=-18000000,DST_OFFSET=3600000]
[ 10-17-2006 15:11:41 Calendar.CalendarInfo ] WARNING: 5
[ 10-17-2006 15:11:41 Calendar.CalendarInfo ] WARNING: 2
[ 10-17-2006 15:11:41 Calendar.CalendarInfo ] WARNING: 1


as you can see from the _calendar.toString() call, it clearly shows the
object year=2006, month=9, day=12
but when i call the direct Calendar.YEAR/MONTH/DAY_OF_MONTH i get
these weird results.

what is up with that? anyone have any clue? Thanks!
 
A

Andreas Wollschlaeger

So I am trying to take a Date object and convert it into a calendar for
use in my application, the code looks like: The string _s comes in in
the format YYYY-MM-DD this i am 100% sure of



public CalendarInfo(String _s) {
DateFormat _formatter = new SimpleDateFormat("yyyy-MM-dd");
try {
_date = _formatter.parse(_s);
_calendar = new GregorianCalendar();
_calendar.clear();
_calendar.setTime(_date);
_log.log_error(_class, "CalendarInfo():
"+_calendar.toString());
_log.log_warning(_class, ""+_calendar.YEAR);
_log.log_warning(_class, ""+_calendar.MONTH);
_log.log_warning(_class,
""+_calendar.DAY_OF_MONTH);
}
catch (java.text.ParseException Ex) {
_log.log_error(_class, "CalendarInfo(): Bad Parse: "+Ex);
}
}



So what i am doing is passing in a string formatted as "2006-10-12" and
converting it to a calendar and this is the results i get:

[ 10-17-2006 15:11:41 Calendar.CalendarInfo ] ERROR: CalendarInfo():
java.util.GregorianCalendar[time=1160625600000,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="America/New_York",offset=-18000000,dstSavings=3600000,useDaylight=true,transitions=235,lastRule=java.util.SimpleTimeZone[id=America/New_York,offset=-18000000,dstSavings=3600000,useDaylight=true,startYear=0,startMode=3,startMonth=2,startDay=8,startDayOfWeek=1,startTime=7200000,startTimeMode=0,endMode=3,endMonth=10,endDay=1,endDayOfWeek=1,endTime=7200000,endTimeMode=0]],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2006,MONTH=9,WEEK_OF_YEAR=41,WEEK_OF_MONTH=2,DAY_OF_MONTH=12,DAY_OF_YEAR=285,DAY_OF_WEEK=5,DAY_OF_WEEK_IN_MONTH=2,AM_PM=0,HOUR=0,HOUR_OF_DAY=0,MINUTE=0,SECOND=0,MILLISECOND=0,ZONE_OFFSET=-18000000,DST_OFFSET=3600000]
[ 10-17-2006 15:11:41 Calendar.CalendarInfo ] WARNING: 5
[ 10-17-2006 15:11:41 Calendar.CalendarInfo ] WARNING: 2
[ 10-17-2006 15:11:41 Calendar.CalendarInfo ] WARNING: 1


as you can see from the _calendar.toString() call, it clearly shows the
object year=2006, month=9, day=12
but when i call the direct Calendar.YEAR/MONTH/DAY_OF_MONTH i get
these weird results.

what is up with that? anyone have any clue? Thanks!

RTFM :) - try calendar.get(Calendar.YEAR) et al.
Admittely, this is one of Suns more bizarre APIS, so this is easy to
dismiss for first time users...

HTH
Andreas
 
A

adam.balgach

thanks!

never thought to try that.


Andreas said:
So I am trying to take a Date object and convert it into a calendar for
use in my application, the code looks like: The string _s comes in in
the format YYYY-MM-DD this i am 100% sure of



public CalendarInfo(String _s) {
DateFormat _formatter = new SimpleDateFormat("yyyy-MM-dd");
try {
_date = _formatter.parse(_s);
_calendar = new GregorianCalendar();
_calendar.clear();
_calendar.setTime(_date);
_log.log_error(_class, "CalendarInfo():
"+_calendar.toString());
_log.log_warning(_class, ""+_calendar.YEAR);
_log.log_warning(_class, ""+_calendar.MONTH);
_log.log_warning(_class,
""+_calendar.DAY_OF_MONTH);
}
catch (java.text.ParseException Ex) {
_log.log_error(_class, "CalendarInfo(): Bad Parse: "+Ex);
}
}



So what i am doing is passing in a string formatted as "2006-10-12" and
converting it to a calendar and this is the results i get:

[ 10-17-2006 15:11:41 Calendar.CalendarInfo ] ERROR: CalendarInfo():
java.util.GregorianCalendar[time=1160625600000,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="America/New_York",offset=-18000000,dstSavings=3600000,useDaylight=true,transitions=235,lastRule=java.util.SimpleTimeZone[id=America/New_York,offset=-18000000,dstSavings=3600000,useDaylight=true,startYear=0,startMode=3,startMonth=2,startDay=8,startDayOfWeek=1,startTime=7200000,startTimeMode=0,endMode=3,endMonth=10,endDay=1,endDayOfWeek=1,endTime=7200000,endTimeMode=0]],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2006,MONTH=9,WEEK_OF_YEAR=41,WEEK_OF_MONTH=2,DAY_OF_MONTH=12,DAY_OF_YEAR=285,DAY_OF_WEEK=5,DAY_OF_WEEK_IN_MONTH=2,AM_PM=0,HOUR=0,HOUR_OF_DAY=0,MINUTE=0,SECOND=0,MILLISECOND=0,ZONE_OFFSET=-18000000,DST_OFFSET=3600000]
[ 10-17-2006 15:11:41 Calendar.CalendarInfo ] WARNING: 5
[ 10-17-2006 15:11:41 Calendar.CalendarInfo ] WARNING: 2
[ 10-17-2006 15:11:41 Calendar.CalendarInfo ] WARNING: 1


as you can see from the _calendar.toString() call, it clearly shows the
object year=2006, month=9, day=12
but when i call the direct Calendar.YEAR/MONTH/DAY_OF_MONTH i get
these weird results.

what is up with that? anyone have any clue? Thanks!

RTFM :) - try calendar.get(Calendar.YEAR) et al.
Admittely, this is one of Suns more bizarre APIS, so this is easy to
dismiss for first time users...

HTH
Andreas
 
D

Daniel Dyer

RTFM :) - try calendar.get(Calendar.YEAR) et al.
Admittely, this is one of Suns more bizarre APIS, so this is easy to
dismiss for first time users...

I believe we have IBM to thank for this particular contribution to the
standard libraries.

Dan.
 
T

Tom Forsmo

Daniel said:
I believe we have IBM to thank for this particular contribution to the
standard libraries.

I hate dates and calendars in Java. I remember having to deal with dates
and calendars on a project a few months ago. I almost never work with
dates, so I didn't remember much about it. I had to go back to the java
book and read up on it because the api is really badly designed. And
even then it took me some extra time to actually get it working correctly.

tom
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,755
Messages
2,569,537
Members
45,024
Latest member
ARDU_PROgrammER

Latest Threads

Top