在XMLGregorianCalendar中指定日期格式
我想使用XMLGregorianCalendar
格式的日期发送到Web服务。 Web服务需要yyyy-dd-mm
格式的信息。 我使用下面的代码创建XMLGregorianCalendar
并将其发送到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(); }
不幸的是,我总是得到1983-06-13T00:00:00.000-04:00
的日期。 时间也包含在输出中。 是否有可能只获得约会? 你可以帮我吗?
你不需要指定“SimpleDateFormat”,它很简单:你必须指定你不想显示的常量“DatatypeConstants.FIELD_UNDEFINED”
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);
是的…
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);
这将使其格式正确。
更简单地使用SimpleDateFormat,而不传递所有参数:
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));
完整的例子。
注意:这仅用于删除最后两个字段:毫秒和时区,或者使用格式化程序yyyy-MM-dd
删除整个时间组件。
对于任何格式,这都是一种简单的方法。 只需将其更改为所需的格式字符串
XMLGregorianCalendar gregFmt = DatatypeFactory.newInstance().newXMLGregorianCalendar(new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss").format(new Date())); System.out.println(gregFmt);