我从SOAP消息收到了以下日期: 的 2012-11-16T02:02:05Z
如何解析日期?根据SOAP规范,日期中的T和Z是什么意思?
答案 0 :(得分:1)
我可以这样做正确解析:
new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'").parse(paymentDate);
谢谢@vikdor!
答案 1 :(得分:1)
Instant.parse( "2012-11-16T02:02:05Z" )
您的输入字符串采用标准ISO 8601格式。该标准定义了许多有用的,实用的,明确的文本格式,用于表示日期时间值。
ISO 8601格式通常被现代协议采用,例如XML模式,SOAP等,取代了RFC 1123 / RFC 822等笨拙的过时格式。
ISO 8601的特定格式使用:
T
将年 - 月 - 日部分与小时 - 分 - 秒部分分开。Z
,Zulu
的缩写,表示UTC时间(+00:00
的{{3}})。使用offset-from-UTC包中的现代类。在解析/生成字符串时,它们默认使用ISO 8601格式。
java.time类代表Instant
中时间轴上的一个时刻,分辨率为UTC(小数部分最多九(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
nanoseconds框架内置于Java 8及更高版本中。这些类取代了麻烦的旧java.time日期时间类,例如legacy,java.util.Date
和& Calendar
现在位于SimpleDateFormat
的Joda-Time项目建议迁移到maintenance mode类。
要了解详情,请参阅java.time。并搜索Stack Overflow以获取许多示例和解释。规范是Oracle Tutorial。
从哪里获取java.time类?
How to use ThreeTenABP…项目使用其他类扩展java.time。该项目是未来可能添加到java.time的试验场。您可以在此处找到一些有用的课程,例如ThreeTen-Extra,Interval
,YearWeek
和YearQuarter
。