【问题标题】:Parsing timestamp Soap fied to Java Date将时间戳 Soap 解析为 Java 日期
【发布时间】:2012-11-16 02:29:22
【问题描述】:

我从 SOAP 消息中收到以下日期: 2012-11-16T02:02:05Z

如何解析到日期?根据 SOAP 规范,这个 T 和日期中的 Z 是什么意思?

【问题讨论】:

标签: java parsing datetime soap timestamp


【解决方案1】:

这样我可以正确解析:

new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'").parse(paymentDate);

谢谢@vikdor!

【讨论】:

【解决方案2】:

tl;博士

Instant.parse( "2012-11-16T02:02:05Z" )

ISO 8601

您的输入字符串是标准的ISO 8601 格式。该标准定义了许多有用、实用、明确的文本格式来表示日期时间值。

现代协议通常采用 ISO 8601 格式,例如 XML 架构、SOAP 等,以取代笨拙的过时格式,例如 RFC 1123 / RFC 822。

您使用 ISO 8601 的特定格式:

  • T 将年-月-日部分与时-分-秒部分分开。
  • ZZulu 的缩写,表示 UTC 时间(offset-from-UTC+00:00)。

使用 java.time

使用java.time 包中的现代类。他们在解析/生成字符串时默认使用 ISO 8601 格式。

Instant 类代表UTC 中时间轴上的时刻,分辨率为nanoseconds(最多九 (9) 位小数)。

Instant instant = Instant.parse( "2012-11-16T02:02:05Z" ) ;

以 UTC 捕捉当前时刻。

Instant instant = Instant.now() ;

只需调用toString,即可生成标准格式的字符串。

String output = instant.toString() ;

2017-07-26T01:23:45.704781401Z


关于java.time

java.time 框架内置于 Java 8 及更高版本中。这些类取代了麻烦的旧 legacy 日期时间类,例如 java.util.DateCalendarSimpleDateFormat

Joda-Time 项目现在位于maintenance mode,建议迁移到java.time 类。

要了解更多信息,请参阅Oracle Tutorial。并在 Stack Overflow 上搜索许多示例和解释。规格为JSR 310

从哪里获取 java.time 类?

ThreeTen-Extra 项目通过附加类扩展了 java.time。该项目是未来可能添加到 java.time 的试验场。您可以在这里找到一些有用的类,例如IntervalYearWeekYearQuartermore

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-02
    • 1970-01-01
    • 2021-11-23
    • 2021-02-08
    • 2018-06-20
    相关资源
    最近更新 更多