我有一个java.sql.Date对象,想将其转换为java.time.LocalDateTime对象。
为了进行比较,我可以使用以下方法进行类似的转换java.util.Date:
java.util.Date utilDate = new java.util.Date(sqlDate.getTime());
System.out.println("date with time: " + utilDate);
Run Code Online (Sandbox Code Playgroud)
这个答案对我不起作用,因为我java.sql.Date没有getTimestamp方法。
作为参考,这个问题涉及相反的转换。
您正在使用可怕的日期时间类,这些类在几年前就被 JSR 310 中定义的现代java.time类所取代。
java.sql.Datejava.util.Datejava.sql.Timestampjava.util.Calendar仅使用java.time类。
要与数据库交换日期时间值,请使用 JDBC 4.2 或更高版本。
该类java.sql.Date假装表示仅日期值。
如果您收到一个java.sql.Date对象,请立即将其转换为java.time.LocalDate. toLocalDate使用添加到旧类中的新方法。
LocalDate localDate = myJavaSqlDate.toLocalDate() ;
Run Code Online (Sandbox Code Playgroud)
你要了一个java.time.LocalDateTime物体。您有必要的日期部分。现在您需要分配一天中的时间部分。
LocalTime localTime = LocalTime.of( 15 , 30 );
Run Code Online (Sandbox Code Playgroud)
结合。
LocalDateTime localDateTime = LocalDateTime.of( localDate, localTime ) ;
Run Code Online (Sandbox Code Playgroud)
ALocalDateTime本质上是有歧义的。日本的下午 3:30 与摩洛哥的下午 3:30 是不同的时刻。
要确定某个时刻(时间轴上的特定点),请将您置于LocalDateTime时区的上下文中。你得到一个ZonedDateTimeObject.
ZoneId zoneId = ZoneId.of( "Asia/Tokyo" ) ;
ZonedDateTime zonedDateTime = localDateTime.atZone( zoneId ) ;
Run Code Online (Sandbox Code Playgroud)
要以 UTC 格式查看该时刻(与 UTC 的偏移量为零时-分-秒),请提取Instant.
Instant instant = zonedDateTime.toInstant() ;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1295 次 |
| 最近记录: |