Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Specify the date format in XMLGregorianCalendar

Tags:

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?

like image 524
Deepika Avatar asked Dec 27 '12 19:12

Deepika


People also ask

How to Create XMLGregorianCalendar Date in Java?

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.

What is the use of XMLGregorianCalendar?

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.

What is DatatypeFactory?

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 .


2 Answers

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); 
like image 109
fernandohealthchess Avatar answered Sep 22 '22 06:09

fernandohealthchess


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.

like image 26
Deepika Avatar answered Sep 23 '22 06:09

Deepika