Java:如何将Instant类型转换为XMLGregorianCalendar类型?

Java:如何将Instant类型转换为XMLGregorianCalendar类型?,java,Java,代码: 现在如何将变量转换为XMLGregorianCalendar类型?我一直在做这方面的研究,我很困惑。我没有发现类似的问题,所以任何东西都是有用的 注: 我正在使用Java 6。您可以这样做: private static Instant now; now = new Instant(); 如果您这样做只是因为您想将即时格式化为ISO 8601格式的字符串,那么有一种更简单的方法: Instant now = Instant.now(); GregorianCalendar cal1

代码:

现在如何将变量转换为XMLGregorianCalendar类型?我一直在做这方面的研究,我很困惑。我没有发现类似的问题,所以任何东西都是有用的

注:
我正在使用Java 6。

您可以这样做:

private static Instant now;
now = new Instant();
如果您这样做只是因为您想将
即时
格式化为ISO 8601格式的
字符串
,那么有一种更简单的方法:

Instant now = Instant.now();

GregorianCalendar cal1 = new GregorianCalendar();
cal1.setTimeInMillis(now.toEpochMilli());

XMLGregorianCalendar cal2 = DatatypeFactory.newInstance().newXMLGregorianCalendar(cal1);

编辑-对于Joda Time类
Instant
,使用
now.getMillis()
而不是
now.toEpochMilli()

是否有特殊原因需要
XMLGregorianCalendar
对象?新的Java 8日期和时间类已经支持ISO 8601日期格式,如果您这样做是因为需要以ISO 8601格式格式化或解析日期和时间(这是XML中使用的日期和时间的标准格式)。我使用org.jode.time中的Instant类。这也是你正在使用的版本吗?因为我没有toEpochMilli方法(不,这是Java 8类
Instant
。但是它有一个类似的方法,
getMillis()
。请参阅。或者您可以简单地执行-…:-)@PrakashK,但这将为您提供一个
字符串,而不是
XMLGregorianCalendar
String dateTime = DateTimeFormatter.ISO_INSTANT.format(now);