java - 无法格式化为 XMLGregorianCalendar

标签 java xml spring datetime xsd

我从字符串日期转换为 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

最佳答案

你不能。 XMLGregorianCalendar是一个(来自 javadoc):

Representation for W3C XML Schema 1.0 date/time datatypes [...] normatively defined in W3C XML Schema 1.0 Part 2, Section 3.2.7-14.

如您所见,dateTime 引用的规范定义是:

3.2.7.1 Lexical representation

The ·lexical space· of dateTime consists of finite-length sequences of characters of the form: '-'? yyyy '-' mm '-' dd 'T' hh ':' mm ':' ss ('.' s+)? (zzzzzz)?

格式中唯一可能的选择是在“词汇表示”和“规范表示”之间。您显示的格式(201402102014/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

关于java - 无法格式化为 XMLGregorianCalendar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34125097/

相关文章:

java - StringRedisTemplate 与 StringRedisConnection

java - 基本 Spring 应用程序的全局异常处理程序

java - glassfish 4.1 和 JMS 集群

在 ServletContext 资源 [/WEB-INF/spring-servlet.xml] : 中定义的名称为 'dataSource' 的 Java 无效 bean 定义

java - 从资源中读取 XML 文件

Java Sax 解析器 - 在 EndElementListener 中停止处理

java - 尝试使用 Spring-WS - "Connection timed out"访问 WS 服务器,但服务器在使用 SOAP UI 测试时响应

java - EJB 3.0 定时器集群信息

java - 按位运算符 ~ 给出了预期之外的输出

c# - 如何使用 C# 从 xml 文件中删除所有空元素?