我的java 7应用程序正在使用Java 8中的服务,我收到的日期为字符串,如下所示
"2020-04-13T12:36:13Z" 这实际上是一个ZonedDateTime。我需要将这个字符串转换为XMLGregorianCalendar并发送到另一个服务?由于我的应用程序是在java 7中,所以无法将字符串解析为ZonedDateTime。有什么办法我可以做这个转换吗?
发布于 2020-07-13 18:19:18
当你知道怎么做的时候就容易了。
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的后端,参见底部的链接。
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
org.threeten.bp导入日期和时间类。链接
java.time的地方。java.time到Java6和7的后端端口(ThreeTen for JSR-310)。https://stackoverflow.com/questions/62881036
复制相似问题