3 回答
TA贡献2051条经验 获得超10个赞
如何将java.util.Date转换为java.sql.Date?
别。
使用 类而不是遗留类 java.util.Date
&java.sql.Date
使用JDBC 4.2或更高版本。 如果与尚未更新的代码进行互操作,则转换为/从java.time转换为java.time。
PreparedStatement
.
myPreparedStatement.setObject( … , // Specify the ordinal number of which argument in SQL statement. myJavaUtilDate.toInstant() // Convert from legacy class `java.util.Date` (a moment in UTC) to a modern `java .time.Instant` (a moment in UTC). .atZone( ZoneId.of( "Africa/Tunis" ) ) // Adjust from UTC to a particular time zone, to determine a date. Instantiating a `ZonedDateTime`. .toLocalDate() // Extract a date-only `java.time.LocalDate` object from the date-time `ZonedDateTime` object.)
而不是 java.util.Date
两者都代表了世界协调时的一个时刻。但是现在只有纳秒而不是毫秒。 而不是 java.sql.Date
这两种方法都表示一个日期纯值,不包括一天中的某个时间,也没有一个时区.
细节
LocalDate
java.util.Date
.
java.time
A DATE
java.time.LocalDate
LocalDate todayLocalDate = LocalDate.now( ZoneId.of( "America/Montreal" ) ); // Use proper "continent/region" time zone names; never use 3-4 letter codes like "EST" or "IST".
LocalDate
setObject
PreparedStatement
myPreparedStatement.setObject( 1 , localDate );
ResultSet::getObject
LocalDate
LocalDate localDate = ResultSet.getObject( 1 , LocalDate.class );
转换为java.sql.Date
java.sql.Date.valueOf(…)
LocalDate
.
java.sql.Date sqlDate = java.sql.Date.valueOf( todayLocalDate );
LocalDate localDate = sqlDate.toLocalDate();
转换自 java.util.Date
Instant
Instant
java.util.Date
Instant
java.util.Date
java.util.Date.from( Instant )
java.util.Date::toInstant
.
Instant instant = myUtilDate.toInstant();
ZoneId
ZonedDateTime
.
ZoneId zoneId = ZoneId.of ( "America/Montreal" );ZonedDateTime zdt = ZonedDateTime.ofInstant ( instant , zoneId );LocalDate localDate = zdt.toLocalDate();
关于 java.time
java.util.Date
, Calendar
, & SimpleDateFormat
.
java.sql.*
,后来 内置的。 带有捆绑实现的标准JavaAPI的一部分。 Java 9添加了一些次要的特性和修复。 和 中的大部分java.time功能都被移植到Java 6&7中。 的android包实现的更高版本。 java.time
上课。 对于早期的Android(<26), 项目适应 (上文所述)。看见
Interval
, YearWeek
, YearQuarter
添加回答
举报