无法格式化为 XMLGregorianCalendar [重复]
Posted
技术标签:
【中文标题】无法格式化为 XMLGregorianCalendar [重复]【英文标题】:Cannot format to XMLGregorianCalendar [duplicate] 【发布时间】:2016-03-11 13:20:03 【问题描述】:我将字符串日期转换为 XMLGregorianCalendar
public static void convertStringToXMLDate(String dateString)
Date dob=null;
DateFormat df=new SimpleDateFormat("yyyyMMdd");
try
dob=df.parse( "20140210" );
catch (ParseException e)
e.printStackTrace();
GregorianCalendar cal = new GregorianCalendar();
cal.setTime(dob);
XMLGregorianCalendar xmlDate3;
try
xmlDate3 = DatatypeFactory.newInstance().newXMLGregorianCalendar(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH)+1, cal.get(Calendar.DAY_OF_MONTH),dob.getHours(),dob.getMinutes(),dob.getSeconds(),DatatypeConstants.FIELD_UNDEFINED, DatatypeConstants.FIELD_UNDEFINED);
System.out.println(xmlDate3);
catch (DatatypeConfigurationException e)
// TODO Auto-generated catch block
e.printStackTrace();
此代码打印 xmlDate3 = 2014-02-10T00:00:00。
如何在 XMLGregorianCalendar 中将其格式化为 20140210 或 2014/02/10
【问题讨论】:
这个问题不是***.com/questions/835889/…的重复问题,因为OP已经知道如何将Date
转换为XMLGregorianCalendar
。
【参考方案1】:
你不能。 XMLGregorianCalendar
是一个(来自 javadoc):
W3C XML Schema 1.0 日期/时间数据类型的表示 [...] 在 W3C XML Schema 1.0 Part 2, Section 3.2.7-14 中规范定义。
如您所见,dateTime 的参考规范定义是:
3.2.7.1 词法表示
dateTime 的·lexical space· 由以下形式的字符的有限长度序列组成:
'-'? yyyy '-' mm '-' dd 'T' hh ':' mm ':' ss ('.' s+)? (zzzzzz)?
唯一可能的格式选择是在“词汇表示”和“规范表示”之间。您显示的格式(20140210
和 2014/02/10
)对于 XML 架构定义的 dateTime 值无效。
现在,如果您确实需要 XML date 值,而不是 dateTime,那么您应该调用 newXMLGregorianCalendarDate(int year, int month, int day, int timezone)
而不是 newXMLGregorianCalendar(int year, int month, int day, int hour, int minute, int second, int millisecond, int timezone)
。
然后输出将是:
2014-02-10
【讨论】:
感谢您的回答!对我有帮助以上是关于无法格式化为 XMLGregorianCalendar [重复]的主要内容,如果未能解决你的问题,请参考以下文章
使用 DecimalFormat 进行格式化会引发异常 - “无法将给定对象格式化为数字”
java.lang.IllegalArgumentException:无法将给定对象格式化为日期
html5 - 无法将`\n`格式化为渲染字符串中的新行[重复]