在Java 8中,如何将Timestamp
(java.sql
}转换为LocalDate
(java.time
)?
答案 0 :(得分:155)
你可以这样做:
timeStamp.toLocalDateTime().toLocalDate();
答案 1 :(得分:6)
我将略微扩展@assylias答案以考虑时区。至少有两种方法可以获取特定时区的LocalDateTime。
您可以对整个应用程序使用setDefault时区。应该在任何时间戳-> java.time转换之前调用它:
[1] "somecharacters1234"
或者您可以使用toInstant.atZone链:
final Intent intent = new Intent(Intent.ACTION_SEND);
intent.setPackage(ShareConstants.SNAPCHAT_PACKAGE_NAME);
final File file = new File(shareItem.getPath());
final Uri photoURI = FileProvider.getUriForFile(activity.get(),ShareConstants.FILE_PROVIDER, file);
intent.putExtra(Intent.EXTRA_STREAM, photoURI);
intent.setTypeAndNormalize(ShareConstants.MIME_TYPE_IMAGE);
startActivity(intent);
答案 2 :(得分:1)
接受的答案并不理想,所以我决定加2美分
timeStamp.toLocalDateTime().toLocalDate();
通常是个不好的解决方案,我什至不确定为什么他们将这种方法添加到JDK中,因为它通过使用系统时区进行隐式转换而使事情变得非常混乱。通常,当仅使用java8日期类时,程序员被迫指定时区,这是一件好事。
好的解决方案是
timestamp.toInstant().atZone(zoneId).toLocalDate()
zoneId 是您要使用的时区,如果要使用系统时区或某些硬编码时区(如,则通常为 ZoneId.systemDefault()) > ZoneId.of(“ UTC”)
一般方法应该是