首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Java 7中将ZonedDateTime转换为XMLGregorianCalendar

如何在Java 7中将ZonedDateTime转换为XMLGregorianCalendar
EN

Stack Overflow用户
提问于 2020-07-13 17:23:41
回答 1查看 294关注 0票数 1

我的java 7应用程序正在使用Java 8中的服务,我收到的日期为字符串,如下所示

代码语言:javascript
复制
"2020-04-13T12:36:13Z" 

这实际上是一个ZonedDateTime。我需要将这个字符串转换为XMLGregorianCalendar并发送到另一个服务?由于我的应用程序是在java 7中,所以无法将字符串解析为ZonedDateTime。有什么办法我可以做这个转换吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-13 18:19:18

当你知道怎么做的时候就容易了。

代码语言:javascript
复制
    String receivedDateTimeString = "2020-04-13T12:36:13Z";
    
    XMLGregorianCalendar xmlgc = DatatypeFactory.newInstance()
            .newXMLGregorianCalendar(receivedDateTimeString);
    
    System.out.println(xmlgc);

输出:

2020年-04-13T12:36:13Z

ZonedDateTime.toString()有时会生成ISO8601格式(有时是一个扩展格式,其区域ID不是ISO8601的一部分)。在您的例子中,您得到了纯ISO 8601。XML文档中的日期和时间使用的是ISO 8601的变体,因此在这里我们可以考虑它们是相同的。因此,XMLGregorianCalendar实例直接从ISO8601字符串创建,其toString方法生成相同的ISO8601字符串。

Java允许您在ThreeTen 7中使用ZonedDateTime

您可以这样做,而且您可能更喜欢在Java7中使用ZonedDateTime,而不是XMLGregorianCalendar。这种使用通过ThreeTen Backport,java.time到Java6和7的后端,参见底部的链接。

代码语言:javascript
复制
import org.threeten.bp.ZonedDateTime;

public class DemoZonedDateTimeInJava7 {

    public static void main(String[] args) {
        String receivedDateTimeString = "2020-04-13T12:36:13Z";
        ZonedDateTime zdt = ZonedDateTime.parse(receivedDateTimeString);
        System.out.println(zdt);
    }

}

2020年-04-13T12:36:13Z

  • 在Java 8和更高版本以及更新的Android设备上(从API级别26),现代API是内置的。
  • 在非Android 6和7中,获取ThreeTen Backport,这是现代类的后端(ThreeTen用于JSR 310;参见底部的链接)。
  • 在(旧版) Android上,使用安卓版本的ThreeTen Backport。它叫ThreeTenABP。并确保使用子包从org.threeten.bp导入日期和时间类。

链接

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62881036

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档