在Java8中,如何将Timestamp
(在java.sql
中)转换为LocalDate
(在java.time
中)?
我将稍微扩展@assylias answer以考虑时区。至少有两种方法可以获取特定时区的LocalDateTime。
您可以为整个应用程序使用setDefault时区。应该在任何时间戳之前调用它-
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是要使用的时区,如果要使用系统时区,通常是ZoneId.systemDefault(),或者是一些硬编码的时区,如ZoneOffset。UTC
一般的做法应该是
你可以做到:
timeStamp.toLocalDateTime().toLocalDate();
请注意,时间戳。toLocalDateTime()
将使用时钟。systemDefaultZone()
进行转换的时区。这可能不是你想要的。
问题内容: 我正在使用JodaTime 1.6.2。 我有一个需要转换为(Joda)或进行映射的a。 原因是我想出了如何在a 和a 之间进行转换: 因此,如果我可以在和之间进行转换,则可以继续转换为。感谢您朝着正确的方向前进! 问题答案: 乔达时间 要将JodaTime转换为,只需执行 要将JodaTime转换为,只需执行 Java时间 要将Java8转换为,只需执行 要将Java8转换为,只需执
我是java.time包的新手。我有一个本地日期是2015-12-10。我需要将此转换为ZonedDateTime。时间应该是00:00:00,区域是zoneoffset.utc。 dateTimeException:无法从java.time.localDate类型的TemporalAccessor:2015-12-10获取Instant 我也试过: 这会产生意想不到的结果。 我查看了API并尝试
我想把这个(字符串)s1转换成模式的LocalDate(LocalDate-dd/mm/yyy) 输出-25/07/1992应该是LocalDate类型,而不是字符串
我使用Java 8的新DateTime API。 如何将LocalDate转换为Instant?我有个例外 我不明白为什么。
有没有一种方法可以将转换为? 我有以下代码: 但是时间戳构造函数似乎不支持该变量类型。
问题内容: 将JodaTime转换为对象的最简单方法是什么? 问题答案: 乔达时间 要将JodaTime转换为,请执行 要将JodaTime转换为,请执行 Java时间 要将Java8转换为,请执行 要将Java8转换为,请执行 您可能会想用来缩短它,但是没有直接的API可以获取系统默认的区域偏移量。 要将Java8转换为,请执行