博士tl;
使用java.time.Instant类解析标准ISO 8601格式的文本,表示UTC时间。
Instant.parse( "2010-10-02T12:23:23Z" )
ISO 8601
该格式由ISO 8601日期-时间字符串格式标准定义。
两个:
java。Java 8及更高版本中内置的时间框架(教程)
Joda-Time图书馆
…默认使用ISO 8601格式来解析和生成字符串。
通常应该避免使用旧的java.util.Date/。Calendar和java.text.SimpleDateFormat类是出了名的麻烦、混乱和有缺陷。如果需要进行互操作,您可以进行来回转换。
java.time
内置于Java 8及以后版本的是新的Java。时间框架。灵感来自Joda-Time,由JSR 310定义,并由ThreeTen-Extra项目扩展。
Instant instant = Instant.parse( "2010-10-02T12:23:23Z" ); // `Instant` is always in UTC.
转换为旧类。
java.util.Date date = java.util.Date.from( instant ); // Pass an `Instant` to the `from` method.
时区
如果需要,您可以指定一个时区。
ZoneId zoneId = ZoneId.of( "America/Montreal" ); // Define a time zone rather than rely implicitly on JVM’s current default time zone.
ZonedDateTime zdt = ZonedDateTime.ofInstant( instant , zoneId ); // Assign a time zone adjustment from UTC.
转换。
java.util.Date date = java.util.Date.from( zdt.toInstant() ); // Extract an `Instant` from the `ZonedDateTime` to pass to the `from` method.
乔达时间
更新:Joda-Time项目现在处于维护模式。团队建议迁移到java。时间类。
下面是Joda-Time 2.8中的一些示例代码。
org.joda.time.DateTime dateTime_Utc = new DateTime( "2010-10-02T12:23:23Z" , DateTimeZone.UTC ); // Specifying a time zone to apply, rather than implicitly assigning the JVM’s current default.
转换为旧类。注意,分配的时区在转换中会丢失,因为j.u.d d不能分配时区。
java.util.Date date = dateTime_Utc.toDate(); // The `toDate` method converts to old class.
时区
如果需要,您可以指定一个时区。
DateTimeZone zone = DateTimeZone.forID( "America/Montreal" );
DateTime dateTime_Montreal = dateTime_Utc.withZone ( zone );
关于java.time
java。时间框架内置于Java 8及更高版本中。这些类取代了麻烦的旧遗留日期-时间类,如java.util。日期,日历和简单日期格式。
Joda-Time项目现在处于维护模式,建议迁移到java。时间类。
要了解更多,请参阅Oracle教程。搜索Stack Overflow可以找到很多例子和解释。规范是JSR 310。
你可以交换java。Time对象直接使用数据库。使用符合JDBC 4.2或更高版本的JDBC驱动程序。不需要字符串,不需要java。sql。*类。
从哪里获取java。时间类?
Java SE 8、Java SE 9以及更高版本
内置的。
带有捆绑实现的标准Java API的一部分。
Java 9增加了一些小特性并进行了修复。
Java SE 6和Java SE 7
大部分的java。时间功能在ThreeTen-Backport中向后移植到Java 6和7。
安卓
后续版本的Android捆绑实现的java。时间类。
对于早期的Android (<26), ThreeTenABP项目适应ThreeTen-Backport(如上所述)。参见如何使用ThreeTenABP....
ThreeTen-Extra项目扩展了java。额外的课程时间。这个项目是未来可能添加到java.time的一个试验场。你可以在这里找到一些有用的类,比如Interval、YearWeek、YearQuarter等等。