[英]Convert LocalDate to LocalDateTime or java.sql.Timestamp
[英]How to convert java.sql.timestamp to LocalDate (java8) java.time?
在Java 8中,如何將Timestamp
(在java.sql
)轉換為LocalDate
(在java.time
)?
你可以做:
timeStamp.toLocalDateTime().toLocalDate();
請注意,
timestamp.toLocalDateTime()
將使用Clock.systemDefaultZone()
時區進行轉換。 這可能是您想要的,也可能不是。
我將略微擴展@assylias答案以考慮時區。 至少有兩種方法可以獲取特定時區的LocalDateTime。
您可以對整個應用程序使用setDefault時區。 應該在任何時間戳-> java.time轉換之前調用它:
public static void main(String... args) {
TimeZone utcTimeZone = TimeZone.getTimeZone("UTC");
TimeZone.setDefault(utcTimeZone);
...
timestamp.toLocalDateTime().toLocalDate();
}
或者,您可以使用toInstant.atZone鏈:
timestamp.toInstant()
.atZone(ZoneId.of("UTC"))
.toLocalDate();
接受的答案並不理想,所以我決定加2美分
timeStamp.toLocalDateTime().toLocalDate();
一般來說 ,這是一個不好的解決方案 ,我什至不知道為什么他們將這種方法添加到JDK中,因為它通過使用系統時區進行隱式轉換而使事情變得非常混亂。 通常,當僅使用java8日期類時,程序員被迫指定時區,這是一件好事。
好的解決方案是
timestamp.toInstant().atZone(zoneId).toLocalDate()
其中zoneId是要使用的時區,如果要使用系統時區或某些硬編碼的時區(例如ZoneOffset.UTC ) ,則通常為ZoneId.systemDefault()
一般方法應該是
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.