gpt4 book ai didi

java - XMLGregorianCalendar 编码时未以正确的格式显示

转载 作者:行者123 更新时间:2023-12-01 11:27:03 26 4
gpt4 key购买 nike

我从数据库中获取一些日期,将它们放入使用 JAXB 从 XSD 模式派生的类的对象中,然后将对象编码到 XML 文件。

其中一个派生类具有 XMLGregorianCalendar 字段,我希望将放在那里的日期以“yyyy-MM-dd'T'HH:mm:ss”格式写入 XML 文件中。

按照 this 的答案中的说明进行操作问题不能解决我的问题。这就是我正在做的事情:

String formattedDate = sdf.format(dateFromTheDatabase);
gc1 = convertStringToXmlGregorian(formattedDate);
gc1.setTimezone(60);
components.setDate(gc1);

我正在使用的功能(或多或少复制了上述链接问题的答案):

public XMLGregorianCalendar convertStringToXmlGregorian(String dateString)     throws DatatypeConfigurationException
{
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
java.util.Date date = sdf.parse(dateString);
GregorianCalendar gc = (GregorianCalendar) GregorianCalendar.getInstance();
gc.setTime(date);
return DatatypeFactory.newInstance().newXMLGregorianCalendar(gc);
} catch (ParseException e) {
e.printStackTrace();
return null;
}
}

当我编码填充的对象时,我在 XML 中获取的日期:

2015-06-03+01:00

...而我希望我的日期采用以下格式:

2015-06-03T00:00:00

我也尝试过的事情:

  • 替换
    “yyyy-MM-dd HH:mm:ss”

    “yyyy-MM-dd'T'HH:mm:ss”

  • 替换

        DatatypeFactory.newInstance().newXMLGregorianCalendar(gc);    

        DatatypeFactory.newInstance().newXMLGregorianCalendar(
    gc.get(Calendar.YEAR), gc.get(Calendar.MONTH) + 1, gc.get(Calendar.DAY_OF_MONTH),
    gc.get(Calendar.HOUR_OF_DAY), 0,0,0,60);

最佳答案

好的,现在我的评论作为答案:

在 JAXB 中的某个位置(您尚未显示相关的 Java 文件),您需要使用注释 @XmlSchemaType(name="dateTime") 设置正确的数据类型。可能您只设置了“date”而不是“dateTime”,因此您的 XMLGregorianCalendar 对象的时间部分已被 JAXB 层抑制。

另一个建议:

到目前为止,您所呈现的部分似乎是双重工作 - 关于 SimpleDateFormat 的使用。如果您的输入已经是 java.util.Date 类型的对象,那么您不需要再次格式化和解析它。只需将其作为参数传递给 GregorianCalendar.setTime() 方法即可。

关于java - XMLGregorianCalendar 编码时未以正确的格式显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30732723/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com