newxmlgregoriancalendar newinstance datatypefactory convertir convert java datetime date

java - newinstance - Convertir fecha a XMLGregorianCalendar



xmlgregoriancalendar c# (2)

Hice el siguiente código para lograr lo mismo. Puede ser un código largo pero funciona bien.

def gregorianCalendar = new GregorianCalendar() def xmlGregorianCalendar = newInstance().newXMLGregorianCalendar(gregorianCalendar) if (//past date is needed) { def date = xmlGregorianCalendar.toGregorianCalendar().time def cal = Calendar.getInstance() cal.setTime(date) cal.add(Calendar.DATE,-3); //subtract 3 days date.setTime(cal.getTime().getTime()) gregorianCalendar.setTime(date) xmlGregorianCalendar = newInstance().newXMLGregorianCalendar(gregorianCalendar) }

Tengo una fecha en el siguiente formato en UI ..

Eg: Thu. 03/01

Los convierto a XMLGregorianCalendar como se explica a continuación.

final DateFormat format = new SimpleDateFormat("E. M/d"); final String dateStr = closeDate; final Date dDate = format.parse(dateStr); GregorianCalendar gregory = new GregorianCalendar(); gregory.setTime(dDate); XMLGregorianCalendar dealCloseDate = DatatypeFactory.newInstance() .newXMLGregorianCalendar(gregory);

Mi salida es "3/06/70 05:00 AM" en lugar de "3/06/2011 05:00 AM". ¿Cuál es el cambio requerido para obtener el año adecuado?


No mencionó nada sobre cómo se supone que se representará el año en esta conversión de fecha, pero aquí hay algunos pseudocódigos para comenzar. Tenga en cuenta que no trato explícitamente con la zona horaria en este ejemplo:

final DateFormat format = new SimpleDateFormat("E. M/d"); final String dateStr = "Thu. 03/01"; final Date date = format.parse(dateStr); GregorianCalendar gregory = new GregorianCalendar(); gregory.setTime(date); XMLGregorianCalendar calendar = DatatypeFactory.newInstance() .newXMLGregorianCalendar( gregory);