Dear Magnolians

Either I'm missing something or the conversion from JCR Dates to Java Calendar 
objects is eerie. I would be glad if you could confirm this or tell me what I'm 
doing wrong.

Situation: A JCR property "date" contains a date which was entered via a date 
field ("time" set to false). It is stored correctly in the repository converted 
to UTC:

  <sv:property sv:name="date" sv:type="Date">
    <sv:value>2011-04-04T22:00:00.000Z</sv:value>
  </sv:property>

Now I read this property into a Calendar object:

Calendar date = NodeDataUtil.getDate(content, "date", null);

When I print this object, I get:

date: 
java.util.GregorianCalendar[time=1301954400000,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="UTC",offset=0,dstSavings=0,useDaylight=false,transitions=0,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2011,MONTH=3,WEEK_OF_YEAR=15,WEEK_OF_MONTH=2,DAY_OF_MONTH=4,DAY_OF_YEAR=94,DAY_OF_WEEK=2,DAY_OF_WEEK_IN_MONTH=1,AM_PM=1,HOUR=10,HOUR_OF_DAY=22,MINUTE=0,SECOND=0,MILLISECOND=0,ZONE_OFFSET=0,DST_OFFSET=0]

No surprises so far. Also when I output it with a SimpleDateFormat object with 
pattern "yyyy-MM-dd HH:mm:ss z" things still look fine (except that I did not 
know that the default time zone is applied automatically):

2011-04-05 00:00:00 CEST

But then, when I try to get the start of the month, things get weird:

            date.set(Calendar.DATE, 1);
            date.set(Calendar.HOUR_OF_DAY, 0);
            date.set(Calendar.MINUTE, 0);
            date.set(Calendar.SECOND, 0);
            date.set(Calendar.MILLISECOND, 0);

No I get:

2011-04-01 02:00:00 CEST

which is of course not what I wanted. Even worse when the date should happen to 
be on the first of the month -> then you'll end up more than a month off target.

However when I set the TimeZone of the date object I get from NodeDataUtil 
explicitly to the default timezone I get the expected result:

2011-04-01 00:00:00 CEST

My question / suggestion now: Wouldn't it make sense to set the TimeZone of the 
Calendar objects returned from NodeData(Utils) per default to the default 
timezone because most likely this was also the timezone they were created in?

-will


----------------------------------------------------------------
For list details see
http://www.magnolia-cms.com/home/community/mailing-lists.html
To unsubscribe, E-mail to: <[email protected]>
----------------------------------------------------------------

Reply via email to