ass*_*ias 179
你可以做:
timeStamp.toLocalDateTime().toLocalDate();
Run Code Online (Sandbox Code Playgroud)
我将略微扩展@assylias答案以考虑时区。至少有两种方法可以获取特定时区的LocalDateTime。
您可以对整个应用程序使用setDefault时区。应该在任何时间戳-> java.time转换之前调用它:
public static void main(String... args) {
TimeZone utcTimeZone = TimeZone.getTimeZone("UTC");
TimeZone.setDefault(utcTimeZone);
...
timestamp.toLocalDateTime().toLocalDate();
}
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用toInstant.atZone链:
timestamp.toInstant()
.atZone(ZoneId.of("UTC"))
.toLocalDate();
Run Code Online (Sandbox Code Playgroud)
接受的答案并不理想,所以我决定加2美分
timeStamp.toLocalDateTime().toLocalDate();
Run Code Online (Sandbox Code Playgroud)
一般而言,这是一个不好的解决方案,我什至不确定为什么他们将这种方法添加到JDK中,因为通过使用系统时区进行隐式转换,这会使事情变得非常混乱。通常,当仅使用java8日期类时,程序员被迫指定时区,这是一件好事。
好的解决方案是
timestamp.toInstant().atZone(zoneId).toLocalDate()
Run Code Online (Sandbox Code Playgroud)
其中zoneId是要使用的时区,如果要使用系统时区或某些硬编码的时区(例如ZoneOffset.UTC ),则通常为ZoneId.systemDefault()
一般方法应该是
| 归档时间: |
|
| 查看次数: |
74835 次 |
| 最近记录: |