如何解决XMLGregorianCalendar 的格式实例
我有一个 XMLGregorianCalendar
的实例,日期格式为
yyyy-MM-dd'T'HH:mm:ss
我需要一个 XMLGregorianCalendar
的实例与
yyyy-MM-dd':'HH:mm:ss
日期格式。可能吗?
我需要使用 JAXB 在 XML 中设置此日期,其中架构要求该字段为 XMLGregorianCalendar
。
解决方法
将 XMLGregorianCalendar
的对象转换为 ZonedDateTime
的对象,您可以使用 DateTimeFormatter
将其格式化为所需的格式。
演示:
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Locale;
import javax.xml.datatype.DatatypeConfigurationException;
import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.XMLGregorianCalendar;
public class Main {
public static void main(String[] args) throws DatatypeConfigurationException {
String givenDateTimeString = "2020-11-08T13:05:46";
XMLGregorianCalendar xmlGregorianCalendar = DatatypeFactory.newInstance()
.newXMLGregorianCalendar(givenDateTimeString);
System.out.println(xmlGregorianCalendar);
ZonedDateTime zdt = xmlGregorianCalendar.toGregorianCalendar().toZonedDateTime();
String formatted = DateTimeFormatter.ofPattern("uuuu-MM-dd':'HH:mm:ss",Locale.ENGLISH).format(zdt);
System.out.println(formatted);
}
}
输出:
2020-11-08T13:05:46
2020-11-08:13:05:46
现在,您可以在 XML 中使用字符串 formatted
。
注意:日期时间对象应该存储有关日期、时间、时区等的信息,与格式无关。您可以使用日期时间格式化 API 将日期时间对象格式化为 String
,并使用您选择的模式。
- 现代日期时间类型的日期时间格式类型(例如
java.time.format.DateTimeFormatter
、java.time.format.DateTimeFormatterBuilder
等)位于包java.time.format
中。 - 旧日期时间类型的日期时间格式类型(例如
java.text.SimpleDateFormat
、java.text.DateFormat
等)位于包java.text
中。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。