将时区添加到打印格式的 ZonedDateTime
ZonedDateTime with timezone added to print format
我在我的项目中使用 https://github.com/JakeWharton/ThreeTenABP。
我有org.threeten.bp
ZonedDateTime: 2019-07-25T14:30:57+05:30[Asia/Calcutta]
如何打印时区小时数?即结果应该有 2019-07-25T20:00:57
从ZonedDateTime
获取以秒为单位的偏移量
ZonedDateTime time = ZonedDateTime.parse("2019-07-25T14:30:57+05:30");
long seconds = time.getOffset().getTotalSeconds();
现在从 ZonedDateTime
中获取 LocalDateTime
部分
LocalDateTime local = time.toLocalDateTime().plusSeconds(seconds); //2019-07-25T20:00:57
toLocalDateTime
Gets the LocalDateTime part of this date-time.
如果您想获取 UTC 格式的本地日期时间,请使用 toInstant()
This returns an Instant representing the same point on the time-line as this date-time. The calculation combines the local date-time and offset.
Instant i = time.toInstant(); //2019-07-25T09:00:57Z
你误会了。字符串中 +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
我在我的项目中使用 https://github.com/JakeWharton/ThreeTenABP。
我有org.threeten.bp
ZonedDateTime: 2019-07-25T14:30:57+05:30[Asia/Calcutta]
如何打印时区小时数?即结果应该有 2019-07-25T20:00:57
从ZonedDateTime
ZonedDateTime time = ZonedDateTime.parse("2019-07-25T14:30:57+05:30");
long seconds = time.getOffset().getTotalSeconds();
现在从 ZonedDateTime
LocalDateTime
部分
LocalDateTime local = time.toLocalDateTime().plusSeconds(seconds); //2019-07-25T20:00:57
toLocalDateTime
Gets the LocalDateTime part of this date-time.
如果您想获取 UTC 格式的本地日期时间,请使用 toInstant()
This returns an Instant representing the same point on the time-line as this date-time. The calculation combines the local date-time and offset.
Instant i = time.toInstant(); //2019-07-25T09:00:57Z
你误会了。字符串中 +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