XMLGregorianCalendar to Calendar to Date
Par PlaceOweb le vendredi, mars 18 2011, 18:29 - JAVA - Lien permanent
Comment convertir une Date en Calendar, GregorianCalendar et XMLGregorianCalendar ?
XMLGregorianCalendar semble être une norme pour les services web.
javax.xml.datatype.XMLGregorianCalendar (jre6) javax.xml.datatype.XMLGregorianCalendar (jre7)
Voici comment comment convertir une Date en (Gregorian)Calendar en XMLGregorianCalendar, et dans le sens inverse.
Alternativement vous avez aussi com.sun.org.apache.xerces.internal.jaxp.datatype.XMLGregorianCalendarImpl qui étends XMLGregorianCalendar, tel que l'on peut le voir dans les sources.
Calendar calendar = Calendar.getInstance(); calendar.set(2011, 12, 22, 23, 59, 30); System.out.println("Calendar:"); System.out.println(calendar); XMLGregorianCalendar xmlGregorianCalendar = null; GregorianCalendar gregorianCalendar = new GregorianCalendar(); gregorianCalendar.setTime(calendar.getTime()); System.out.println("GregorianCalendar:"); System.out.println(gregorianCalendar); Date date = calendar.getTime(); System.out.println("Date:"); System.out.println(date); try { xmlGregorianCalendar = DatatypeFactory.newInstance().newXMLGregorianCalendar(gregorianCalendar); System.out.println("XMLGregorianCalendarImpl (DatatypeFactory.newInstance()):"); System.out.println(xmlGregorianCalendar); } catch (DatatypeConfigurationException e) { e.printStackTrace(); } XMLGregorianCalendarImpl xmlGregorianCalendarImpl = new XMLGregorianCalendarImpl((GregorianCalendar) calendar); System.out.println("XMLGregorianCalendarImpl (cast) Calendar or GregorianCalendar:"); System.out.println(xmlGregorianCalendarImpl); System.out.println("XMLGregorianCalendar.to GregorianCalendar+Date/String/XMLFormat"); System.out.println(xmlGregorianCalendar.toGregorianCalendar()); System.out.println(xmlGregorianCalendar.toGregorianCalendar().getTime()); System.out.println(xmlGregorianCalendar.toString()); System.out.println(xmlGregorianCalendar.toXMLFormat()); System.out.println("xmlGregorianCalendarImpl GregorianCalendar+Date/String/XMLFormat"); System.out.println(xmlGregorianCalendarImpl.toGregorianCalendar()); System.out.println(xmlGregorianCalendarImpl.toGregorianCalendar().getTime()); System.out.println(xmlGregorianCalendarImpl.toString()); System.out.println(xmlGregorianCalendarImpl.toXMLFormat());
Calendar: java.util.GregorianCalendar[time=?,areFieldsSet=false,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Europe/Paris",offset=3600000,dstSavings=3600000,useDaylight=true,transitions=184,lastRule=java.util.SimpleTimeZone[id=Europe/Paris,offset=3600000,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=2,minimalDaysInFirstWeek=4,ERA=1,YEAR=2011,MONTH=12,WEEK_OF_YEAR=11,WEEK_OF_MONTH=3,DAY_OF_MONTH=22,DAY_OF_YEAR=77,DAY_OF_WEEK=6,DAY_OF_WEEK_IN_MONTH=3,AM_PM=1,HOUR=5,HOUR_OF_DAY=23,MINUTE=59,SECOND=30,MILLISECOND=578,ZONE_OFFSET=3600000,DST_OFFSET=0] GregorianCalendar: java.util.GregorianCalendar[time=1327273170578,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Europe/Paris",offset=3600000,dstSavings=3600000,useDaylight=true,transitions=184,lastRule=java.util.SimpleTimeZone[id=Europe/Paris,offset=3600000,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=2,minimalDaysInFirstWeek=4,ERA=1,YEAR=2012,MONTH=0,WEEK_OF_YEAR=3,WEEK_OF_MONTH=3,DAY_OF_MONTH=22,DAY_OF_YEAR=22,DAY_OF_WEEK=1,DAY_OF_WEEK_IN_MONTH=4,AM_PM=1,HOUR=11,HOUR_OF_DAY=23,MINUTE=59,SECOND=30,MILLISECOND=578,ZONE_OFFSET=3600000,DST_OFFSET=0] Date: Sun Jan 22 23:59:30 CET 2012 XMLGregorianCalendarImpl (DatatypeFactory.newInstance()): 2012-01-22T23:59:30.578+01:00 XMLGregorianCalendarImpl (cast) Calendar or GregorianCalendar: 2012-01-22T23:59:30.578+01:00 XMLGregorianCalendar.to GregorianCalendar+Date/String/XMLFormat java.util.GregorianCalendar[time=?,areFieldsSet=false,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="GMT+01:00",offset=3600000,dstSavings=0,useDaylight=false,transitions=0,lastRule=null],firstDayOfWeek=2,minimalDaysInFirstWeek=4,ERA=1,YEAR=2012,MONTH=0,WEEK_OF_YEAR=1,WEEK_OF_MONTH=1,DAY_OF_MONTH=22,DAY_OF_YEAR=1,DAY_OF_WEEK=5,DAY_OF_WEEK_IN_MONTH=1,AM_PM=0,HOUR=0,HOUR_OF_DAY=23,MINUTE=59,SECOND=30,MILLISECOND=578,ZONE_OFFSET=3600000,DST_OFFSET=0] Sun Jan 22 23:59:30 CET 2012 2012-01-22T23:59:30.578+01:00 2012-01-22T23:59:30.578+01:00 xmlGregorianCalendarImpl GregorianCalendar+Date/String/XMLFormat java.util.GregorianCalendar[time=?,areFieldsSet=false,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="GMT+01:00",offset=3600000,dstSavings=0,useDaylight=false,transitions=0,lastRule=null],firstDayOfWeek=2,minimalDaysInFirstWeek=4,ERA=1,YEAR=2012,MONTH=0,WEEK_OF_YEAR=1,WEEK_OF_MONTH=1,DAY_OF_MONTH=22,DAY_OF_YEAR=1,DAY_OF_WEEK=5,DAY_OF_WEEK_IN_MONTH=1,AM_PM=0,HOUR=0,HOUR_OF_DAY=23,MINUTE=59,SECOND=30,MILLISECOND=578,ZONE_OFFSET=3600000,DST_OFFSET=0] Sun Jan 22 23:59:30 CET 2012 2012-01-22T23:59:30.578+01:00 2012-01-22T23:59:30.578+01:00
Voyez aussi le résumé simplifié : Utilisation du type XMLGregorianCalendar