obtener new gregorian fecha example ejemplo convertir actual java calendar gregorian-calendar

java - new - Especifique el formato de fecha en XMLGregorianCalendar



new calendar java (4)

Quiero utilizar una fecha en formato XMLGregorianCalendar para enviar a un servicio web. El servicio web espera información en formato yyyy-dd-mm . Utilizo el siguiente código para crear un XMLGregorianCalendar y enviarlo al servicio web.

Date dob = null; DateFormat df = new SimpleDateFormat("dd/MM/yyyy"); try { XMLGregorianCalendar date2; dob = df.parse("13/06/1983"); GregorianCalendar c = new GregorianCalendar(); c.setTimeInMillis(dob.getTime()); date2 = DatatypeFactory.newInstance().newXMLGregorianCalendar(c); System.out.println(date2); } catch(DatatypeConfigurationException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch(ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); }

Desafortunadamente, siempre recibo la fecha como 1983-06-13T00:00:00.000-04:00 . El tiempo también se incluye en la salida. ¿Es posible obtener solo la fecha? ¿Me podría ayudar?


Sí, lo tengo ...

Date dob=null; DateFormat df=new SimpleDateFormat("dd/MM/yyyy"); dob=df.parse( "13/06/1983" ); GregorianCalendar cal = new GregorianCalendar(); cal.setTime(dob); XMLGregorianCalendar xmlDate = DatatypeFactory.newInstance().newXMLGregorianCalendarDate(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH)+1, cal.get(Calendar.DAY_OF_MONTH), DatatypeConstants.FIELD_UNDEFINED);

Esto le dará el formato correcto.


no necesita especificar un "SimpleDateFormat", es simple: debe especificar la constante "DatatypeConstants.FIELD_UNDEFINED" donde no desea mostrar

GregorianCalendar cal = new GregorianCalendar(); cal.setTime(new Date()); XMLGregorianCalendar xmlDate = DatatypeFactory.newInstance().newXMLGregorianCalendarDate(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH)+1, cal.get(Calendar.DAY_OF_MONTH), DatatypeConstants.FIELD_UNDEFINED);


Mucho más simple usando SimpleDateFormat, sin pasar todos los parámetros individualmente:

String FORMATER = "yyyy-MM-dd''T''HH:mm:ss''Z''"; DateFormat format = new SimpleDateFormat(FORMATER); Date date = new Date(); XMLGregorianCalendar gDateFormatted = DatatypeFactory.newInstance().newXMLGregorianCalendar(format.format(date));

Ejemplo completo aquí .

Nota: Esto solo funciona para eliminar los últimos dos campos: milisegundos y zona horaria o para eliminar el componente de tiempo completo utilizando el formateador yyyy-MM-dd .


Esta es una forma fácil para cualquier formato. Simplemente cámbialo a la cadena de formato requerida

XMLGregorianCalendar gregFmt = DatatypeFactory.newInstance().newXMLGregorianCalendar(new SimpleDateFormat("yyyy-MM-dd''T''HH:mm:ss").format(new Date())); System.out.println(gregFmt);