Ik zit met een vervelend probleem ivm de Java GregorianCalendar klasse.
Wanneer ik de dag/maand/jaar + tijdszone kopiëer naar een tweede Calendar object. Dan is de dag verkeerd. Wanneer ik geen tijdszone meegeef aan het eerste Calendar object, dan is er echter geen enkel probleem. Heeft er iemand een idee wat hier mis gaat?
Heb reeds enkele fora afgezocht zonder duidend antwoord.
Volgende code:
Geeft volgende resultaat:
Wanneer ik de dag/maand/jaar + tijdszone kopiëer naar een tweede Calendar object. Dan is de dag verkeerd. Wanneer ik geen tijdszone meegeef aan het eerste Calendar object, dan is er echter geen enkel probleem. Heeft er iemand een idee wat hier mis gaat?
Heb reeds enkele fora afgezocht zonder duidend antwoord.
Volgende code:
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| java.text.SimpleDateFormat dateFormat = new java.text.SimpleDateFormat("dd MM yyyy"); String strDate = "05 08 2007"; java.util.Date date = dateFormat.parse(strDate); java.util.Calendar calendarA = java.util.Calendar.getInstance(java.util.TimeZone.getTimeZone("Europe/Dublin")); //java.util.Calendar calendarA = java.util.Calendar.getInstance(); calendarA.setTime(date); // Create a copy of dd MM yyyy -> BUG in JAVA ??? java.util.Calendar calendarB = java.util.Calendar.getInstance(); calendarB.setTimeZone(calendarA.getTimeZone()); calendarB.set(calendarA.get(java.util.Calendar.YEAR), calendarA.get(java.util.Calendar.MONTH), calendarA.get(java.util.Calendar.DAY_OF_MONTH)); System.out.println("strDate : " +strDate); System.out.println("date : " +date); System.out.println("date : " +dateFormat.format(date)); System.out.println("---\ncalendarA1 : " +calendarA); System.out.println("calendarA2 : " +calendarA.getTime()); System.out.println("calendarA3 : " +dateFormat.format(calendarA.getTime()) +" --> CORRECT"); System.out.println("calendarA4 : " +calendarA.get(java.util.Calendar.DAY_OF_MONTH) +" --> BUG in JAVA??"); System.out.println("---\ncalendarB1 : " +calendarB); System.out.println("calendarB2 : " +calendarB.getTime()); System.out.println("calendarB3 : " +dateFormat.format(calendarB.getTime()) +" --> BUG in JAVA when TimeZone is set on calendarA??"); System.out.println("calendarB4 : " +calendarB.get(java.util.Calendar.DAY_OF_MONTH)); |
Geeft volgende resultaat:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
| strDate : 05 08 2007 date : Sun Aug 05 00:00:00 CEST 2007 date : 05 08 2007 --- calendarA1 : java.util.GregorianCalendar[time=1186264800000,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Europe/Dublin",offset=0,dstSavings=3600000,useDaylight=true,transitions=228,lastRule=java.util.SimpleTimeZone[id=Europe/Dublin,offset=0,dstSavings=3600000,useDaylight=true,startYear=0,startMode=2,startMonth=2,startDay=-1,startDayOfWeek=1,startTime=3600000,startTimeMode=2,endMode=2,endMonth=9,endDay=-1,endDayOfWeek=1,endTime=3600000,endTimeMode=2]],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2007,MONTH=7,WEEK_OF_YEAR=31,WEEK_OF_MONTH=1,DAY_OF_MONTH=4,DAY_OF_YEAR=216,DAY_OF_WEEK=7,DAY_OF_WEEK_IN_MONTH=1,AM_PM=1,HOUR=11,HOUR_OF_DAY=23,MINUTE=0,SECOND=0,MILLISECOND=0,ZONE_OFFSET=0,DST_OFFSET=3600000] calendarA2 : Sun Aug 05 00:00:00 CEST 2007 calendarA3 : 05 08 2007 --> CORRECT calendarA4 : 4 --> BUG in JAVA?? --- calendarB1 : java.util.GregorianCalendar[time=?,areFieldsSet=false,areAllFieldsSet=false,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Europe/Dublin",offset=0,dstSavings=3600000,useDaylight=true,transitions=228,lastRule=java.util.SimpleTimeZone[id=Europe/Dublin,offset=0,dstSavings=3600000,useDaylight=true,startYear=0,startMode=2,startMonth=2,startDay=-1,startDayOfWeek=1,startTime=3600000,startTimeMode=2,endMode=2,endMonth=9,endDay=-1,endDayOfWeek=1,endTime=3600000,endTimeMode=2]],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2007,MONTH=7,WEEK_OF_YEAR=35,WEEK_OF_MONTH=5,DAY_OF_MONTH=4,DAY_OF_YEAR=240,DAY_OF_WEEK=3,DAY_OF_WEEK_IN_MONTH=4,AM_PM=1,HOUR=0,HOUR_OF_DAY=12,MINUTE=12,SECOND=38,MILLISECOND=881,ZONE_OFFSET=3600000,DST_OFFSET=3600000] calendarB2 : Sat Aug 04 13:12:38 CEST 2007 calendarB3 : 04 08 2007 --> BUG in JAVA when TimeZone is set on calendarA?? calendarB4 : 4 |