博士tl;
输入字符串使用标准ISO 8601格式。
Instant.parse ( "2011-08-12T20:17:46.384Z" )
ISO 8601
这种格式是由实用标准ISO 8601定义的。
T分隔日期部分和时间部分。末尾的Z表示UTC(即0小时-分钟-秒的UTC偏移量)。Z发音为“Zulu”。
java.time
与早期版本的Java捆绑在一起的旧的日期-时间类已被证明是设计糟糕、令人困惑和麻烦的。避免它们。
相反,请使用java。在Java 8及以后版本中内置了时间框架。java。time类取代了旧的date-time类和非常成功的Joda-Time库。
java。时间类在解析/生成日期-时间值的文本表示时默认使用ISO 8601。
Instant类表示UTC时间轴上的一个时刻,分辨率为纳秒。该类可以直接解析输入字符串,而无需费心定义格式化模式。
Instant instant = Instant.parse ( "2011-08-12T20:17:46.384Z" ) ;
关于java.time
java。时间框架内置于Java 8及更高版本中。这些类取代了麻烦的旧遗留日期-时间类,如java.util。日期,日历和简单日期格式。
要了解更多,请参阅Oracle教程。搜索Stack Overflow可以找到很多例子和解释。规范是JSR 310。
Joda-Time项目现在处于维护模式,建议迁移到java。时间类。
你可以交换java。Time对象直接使用数据库。使用符合JDBC 4.2或更高版本的JDBC驱动程序。不需要字符串,不需要java。sql。*类。Hibernate 5和JPA 2.2支持java.time。
从哪里获取java。时间类?
Java SE 8, Java SE 9, Java SE 10, Java SE 11, and later - Part of the standard Java API with a bundled implementation.
Java 9 brought some minor features and fixes.
Java SE 6 and Java SE 7
Most of the java.time functionality is back-ported to Java 6 & 7 in ThreeTen-Backport.
Android
Later versions of Android (26+) bundle implementations of the java.time classes.
For earlier Android (<26), a process known as API desugaring brings a subset of the java.time functionality not originally built into Android.
If the desugaring does not offer what you need, the ThreeTenABP project adapts ThreeTen-Backport (mentioned above) to Android. See How to use ThreeTenABP….