java-8 - 如何在 Java 7 中将 ZonedDateTime 转换为 XMLGregorianCalendar
问题描述
我的 java 7 应用程序使用 Java 8 中的服务,我收到一个日期作为字符串,如
"2020-04-13T12:36:13Z"
这实际上是一个 ZonedDateTime。我需要将此字符串转换为 XMLGregorianCalendar 并发送到另一个服务?由于我的应用程序在 java 7 中,我无法将字符串解析为 ZonedDateTime 。有什么办法可以进行这种转换吗?
解决方案
当你知道怎么做时很容易。
String receivedDateTimeString = "2020-04-13T12:36:13Z";
XMLGregorianCalendar xmlgc = DatatypeFactory.newInstance()
.newXMLGregorianCalendar(receivedDateTimeString);
System.out.println(xmlgc);
输出:
2020-04-13T12:36:13Z
ZonedDateTime.toString()
有时会生成 ISO 8601 格式(有时会生成带有不属于 ISO 8601 的区域 ID 的扩展格式)。在您的情况下,您有纯 ISO 8601。XML 文档中的日期和时间使用 ISO 8601 的变体,它足够接近,我们可以在这里将它们视为相同的目的。因此,一个XMLGregorianCalendar
实例是直接从 ISO 8601 字符串创建的,其toString
方法会返回相同的 ISO 8601 字符串。
ThreeTen Backport 允许您在 Java 7 中使用 ZonedDateTime
您可以,而且您可能更喜欢ZonedDateTime
在 Java 7 中使用,而不是XMLGregorianCalendar
. 此使用通过 ThreeTen Backport,java.time 到 Java 6 和 7 的反向移植,请参阅底部的链接。
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 Java 6 和 7 中获得 ThreeTen Backport,现代类的后向端口(ThreeTen 用于 JSR 310;请参阅底部的链接)。
- 在(较旧的)Android 上使用 ThreeTen Backport 的 Android 版本。它被称为 ThreeTenABP。并确保从
org.threeten.bp
子包中导入日期和时间类。
链接
- Oracle 教程:日期时间解释如何使用 java.time。
- Java 规范请求 (JSR) 310,
java.time
第一次描述的地方。 - ThreeTen Backport 项目,
java.time
Java 6 和 7 的反向移植(ThreeTen for JSR-310)。 - ThreeTenABP , ThreeTen Backport 的 Android 版
- 问题:如何在Android项目中使用ThreeTenABP,有非常详尽的解释。
- 维基百科文章:ISO 8601
推荐阅读
- powershell - 如何使用 REST API 销毁 TFVC 中的分支?
- c# - select2 多个下拉菜单保存到 Oracle 数据库
- java - 我不明白 return 如何与所涉及的 if/else 语句一起工作-请帮助 [java]
- c# - GameObject.FindGameObjectsWithTag("Enemy").Length 因某种原因减一?
- python - Pandas - 对数据列求和,直到满足值,构建子集,冲洗并重复所有行
- r - 如何突出 ggpairs 相关矩阵中的高相关性?
- string - 在 hdf5 中存储可变长度字符串列表的标准方法是什么?
- makefile - 编译tbb项目时出现cmake命令问题
- pine-script - 如何隐藏 RSI 条上的彩色零
- python - 我认为为什么会出现这种词性错误,我该如何解决