我有一個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);
這個答案對我java.sql.Date不起作用,因為我沒有getTimestamp方法。
作為參考,這個問題解決了相反的轉換。
uj5u.com熱心網友回復:
您正在使用可怕的日期時間類,這些類在多年前被JSR 310 中定義的現代java.time類所取代。
- 不使用
java.sql.Date - 不使用
java.util.Date - 不使用
java.sql.Timestamp - 不使用
java.util.Calendar
僅使用java.time類。
要與資料庫交換日期時間值,請使用 JDBC 4.2 或更高版本。
該java.sql.Date班假裝代表日期的唯一價值。
如果您收到一個java.sql.Date物件,請立即將其轉換為java.time.LocalDate. 使用toLocalDate添加到舊類的新方法。
LocalDate localDate = myJavaSqlDate.toLocalDate() ;
你要了一個java.time.LocalDateTime物件。您有必要的日期部分。現在您需要分配時間部分。
LocalTime localTime = LocalTime.of( 15 , 30 );
結合。
LocalDateTime localDateTime = LocalDateTime.of( localDate, localTime ) ;
ALocalDateTime本質上是模棱兩可的。下午 3:30 ?? 在日本???? 與下午 3:30 ?? 在摩洛哥???? 是不同的時刻。
要確定某個時刻、時間軸上的特定點,請將您LocalDateTime置于時區的背景關系中。你得到一個ZonedDateTimeObject.
ZoneId zoneId = ZoneId.of( "Asia/Tokyo" ) ;
ZonedDateTime zonedDateTime = localDateTime.atZone( zoneId ) ;
要查看在 UTC 中看到的那個時刻,從 UTC 的零時分秒偏移量,提取一個Instant.
Instant instant = zonedDateTime.toInstant() ;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/327928.html
上一篇:LocalDateTime使用FormatStyle.MEDIUM加時區
下一篇:日期列也包含空值
