赞
踩
TL;博士
Instant.parse( "2018-05-23T23:18:31.000Z" ) // Parse this String in standard ISO 8601 format as a `Instant`, a point on the timeline in UTC. The `Z` means UTC.
.atOffset( ZoneOffset.UTC ) // Change from `Instant` to the more flexible `OffsetDateTime`.
.format( // Generate a String representing the value of this `OffsetDateTime` object.
DateTimeFormatter.ofPattern( "uuuu-MM-dd HH:mm:ss" ) // Specify a formatting pattern as desired.
) // Returns a `String` object.
2018-05-23 23:18:31
ISO 8601
您的输入字符串采用标准ISO 8601格式。
在解析/生成字符串时, java.time类默认使用这些标准格式。
T将年 - 月 - 日部分与小时 - 分 - 秒分开。 Z的发音为Zulu ,表示UTC 。
java.time
您使用的是几年前由java.time类取代的麻烦的旧日期时间类。 Apache DateUtils也不再需要,因为您也可以在java.time中找到它的功能。
将输入字符串解析为Instant对象。 Instant类表示UTC时间轴上的一个时刻,分辨率为纳秒 (最多九(9)位小数)。
String input = "2018-05-23T23:18:31.000Z" ;
Instant instant = Instant.parse( input ) ;
要以另一种格式生成字符串,我们需要一个更灵活的对象。 Instant类是一个基本的构建块。 我们s convert it to a OffsetDateTime`,使用UTC本身作为指定的UTC-offset。
OffsetDateTime odt = instant.atOffset( ZoneOffset.UTC ) ;
定义格式模式以匹配所需的输出。
DateTimeFormatter f = DateTimeFormatter.ofPattern( "uuuu-MM-dd HH:mm:ss" ) ;
String output = odt.format( f ) ;
提示:考虑使用DateTimeFormatter::ofLocalized…方法自动本地化每个Locale的String生成,而不是硬编码格式化模式。
关于java.time
要了解更多信息,请参阅Oracle教程 。 并搜索Stack Overflow以获取许多示例和解释。
您可以直接与数据库交换java.time对象。 不需要字符串,不需要java.sql.*类。
从哪里获取java.time类?
内置。
带有捆绑实现的标准Java API的一部分。
Java 9增加了一些小功能和修复。
更高版本的Android捆绑java.time类的实现。
ThreeTen-Extra项目使用其他类扩展了java.time。 该项目是未来可能添加到java.time的试验场。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。