【发布时间】:2019-06-04 02:59:47
【问题描述】:
final Timestamp rawDateTime = Timestamp.valueOf("2031-04-25 18:30:00");
final ZoneId zoneId = ZoneId.of("Asia/Calcutta");
final ZonedDateTime zonedDateTime = ZonedDateTime.ofInstant(
Instant.ofEpochMilli(rawDateTime.getTime()), zoneId);
// here we are getting output as 2031-04-25T18:30+05:30[Asia/Calcutta]
final ZonedDateTime zonedDateTime1 =
ZonedDateTime.of(rawDateTime.toLocalDateTime(), zoneId);
// here we are getting output as 2031-04-25T18:30+05:30[Asia/Calcutta]
但我想将转换后的日期时间设为 2031-04-26 00:00:00+5:30,因为我的时间戳值位于 UTC 时区。
请帮忙。
【问题讨论】:
-
您的代码无法编译。您在第一行缺少分号,“Asia/Calcutta”不是
ZoneId,而是String。在发布到 Stack Overflow 之前,请确保您的代码确实执行了您声称的操作。 -
由于您使用的是现代 Java 日期和时间 API java.time,您应该避免使用
Timestamp类,它属于现在已被替换的旧类和过时类。请改用Instant(或在特殊情况下使用LocalDateTime)。 -
Java: How do you convert a UTC timestamp to local time? 和许多其他问题的可能重复。请搜索并找到。