I want to use a Date in XMLGregorianCalendar
format for sending to a web service. The web service expects information in yyyy-dd-mm
format. I use the below code to create an XMLGregorianCalendar
and send it to web service.
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(); }
Unfortunately I always get the date as 1983-06-13T00:00:00.000-04:00
. Time is also getting included in the output. Is it possible to get only the date? Could you please help me?
The simplest way to format XMLGregorianCalendar is to first convert it to the Date object, and format the Date to String. XMLGregorianCalendar xCal = ..; //Create instance Date date = xCal. toGregorianCalendar(). getTime(); DateFormat df = new SimpleDateFormat("MM/dd/yyyy hh:mm a z"); String formattedString = df.
The XML Schema standard defines clear rules for specifying dates in XML format. In order to use this format, the Java class XMLGregorianCalendar, introduced in Java 1.5, is a representation of the W3C XML Schema 1.0 date/time datatypes.
DatatypeFactory ", exists, a class with the name of the property's value is instantiated. Any Exception thrown during the instantiation process is wrapped as a DatatypeConfigurationException . If the file ${JAVA_HOME}/lib/jaxp. properties exists, it is loaded in a Properties Object .
you don't need to specify a "SimpleDateFormat", it's simple: You must do specify the constant "DatatypeConstants.FIELD_UNDEFINED" where you don't want to show
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);
Yeah Got it...
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);
This will give it in correct format.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With