tl;博士
myPreparedStatement.setObject( // Directly exchange java.time objects with database without the troublesome old java.sql.* classes.
… ,
LocalDate.parse( // Parse string as a `LocalDate` date-only value.
"2018-01-23" // Input string that complies with standard ISO 8601 formatting.
)
)
java.time
现代方法使用java.time类取代了麻烦的旧旧类,例如SimpleDateFormat和java.sql.Date。
对于仅日期值,请使用SimpleDateFormat。SimpleDateFormat类表示没有日期和时区的仅日期值。
解析/生成字符串时,java.time类使用标准格式。 因此,无需指定格式化模式。
LocalDate ld = LocalDate.parse( input ) ;
您可以使用兼容JDBC 4.2或更高版本的JDBC驱动程序直接与数据库交换java.time对象。 您可能会忘记转换和转换java.sql。*类。
myPreparedStatement.setObject( … , ld ) ;
恢复:
LocalDate ld = myResultSet.getObject( … , LocalDate.class ) ;
关于java.time
java.time框架内置于Java 8及更高版本中。 这些类取代了麻烦的旧的传统日期时间类,例如SimpleDateFormat、SimpleDateFormat和SimpleDateFormat。
现在处于维护模式的Joda-Time项目建议迁移到java.time类。
要了解更多信息,请参见Oracle教程。 并在Stack Overflow中搜索许多示例和说明。 规格是JSR 310。
在哪里获取java.time类?
Java SE 8,Java SE 9和更高版本内置的
标准Java API的一部分,具有捆绑的实现。
Java 9添加了一些次要功能和修复。
Java SE 6和Java SE 7很多java.time功能都在ThreeTen-Backport中反向移植到Java 6和7。
安卓系统更高版本的Android捆绑了java.time类的实现。
对于较早的Android,ThreeTenABP项目改编了ThreeTen-Backport(如上所述)。 请参阅如何使用ThreeTenABP…。
ThreeTen-Extra项目使用其他类扩展了java.time。 该项目为将来可能在java.time中添加内容提供了一个试验场。 您可能会在这里找到一些有用的类,例如YearQuarter、YearQuarter、YearQuarter等。