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这两种方法都表示一个日期纯值,不包括一天中的某个时间,也没有一个时区.
细节
LocalDatejava.util.Date.
java.time
A DATEjava.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".
LocalDatesetObjectPreparedStatement
myPreparedStatement.setObject( 1 , localDate );
ResultSet::getObjectLocalDate
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
InstantInstantjava.util.DateInstantjava.util.Date
java.util.Date.from( Instant )java.util.Date::toInstant.
Instant instant = myUtilDate.toInstant();
ZoneIdZonedDateTime.
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
添加回答
举报
