我在我的项目中使用https://github.com/JakeWharton/ThreeTenABP 。
我有 org.threeten.bp
ZonedDateTime: 2019-07-25T 14:30:57+05:30 [亚洲/加尔各答]
如何通过添加时区时间来打印此内容?即结果应该有 2019-07-25T 20:00:57
我在我的项目中使用https://github.com/JakeWharton/ThreeTenABP 。
我有 org.threeten.bp
ZonedDateTime: 2019-07-25T 14:30:57+05:30 [亚洲/加尔各答]
如何通过添加时区时间来打印此内容?即结果应该有 2019-07-25T 20:00:57
你误会了。字符串中 +05:30 的偏移量意味着与 UTC 相比,时间已经增加了 5 小时 30 分钟。因此,再次添加它们将没有任何意义。
如果您想补偿偏移量,只需将您的日期时间转换为 UTC。例如:
ZonedDateTime zdt = ZonedDateTime.parse("2019-07-25T14:30:57+05:30[Asia/Calcutta]");
OffsetDateTime utcDateTime = zdt.toOffsetDateTime().withOffsetSameInstant(ZoneOffset.UTC);
System.out.println(utcDateTime);
输出:
2019-07-25T09:00:57Z
以秒的形式获取偏移量ZonedDateTime
ZonedDateTime time = ZonedDateTime.parse("2019-07-25T14:30:57+05:30");
long seconds = time.getOffset().getTotalSeconds();
现在LocalDateTime
从ZonedDateTime
LocalDateTime local = time.toLocalDateTime().plusSeconds(seconds); //2019-07-25T20:00:57
到本地日期时间
获取此日期时间的 LocalDateTime 部分。
如果您想以 UTC 格式获取本地日期时间,请使用toInstant()
这将返回一个 Instant,表示时间线上与此日期时间相同的点。该计算结合了本地日期时间和偏移量。
Instant i = time.toInstant(); //2019-07-25T09:00:57Z