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);