0

我正在创建一个应用程序,它在日历对象中获取一个人的本地日期和时间。我有以下信息:

州代码 GMT 偏移 夏令时信息

任何形式的帮助都非常感谢。

// 我有可用的 GMTOffset 信息

LocalDateTime gmtToLocal,gmtTime ;
gmtTime = LocalDateTime.now(ZoneId.of("UTC"));
gmtToLocal = gmtTime.plusHours(GMTOffset);
4

1 回答 1

0

您将麻烦的旧旧日期时间类 ( Calendar) 与现代 java.time 类 ( LocalDateTime) 混合在一起。不。只使用 java.time 类。

ALocalDateTime没有时区信息,这就是它的目的。所以它并不代表时间线上的一个时刻。这对您的问题没有用处。

你说你有一个给定的 UTC 偏移量。所以你想要一个OffsetDateTime与一个ZoneOffset

Instant instant = Instant.now();  // Current moment in UTC.
ZoneOffset offset = ZoneOffset.ofHoursMinutes( 5 , 30 );
OffsetDateTime odt = OffsetDateTime.atOffset( offset );

作为捷径,您可以跳过获取Instant.

OffsetDateTime odt = OffsetDateTime.now( offset );

像夏令时这样的异常不能仅仅通过从 UTC 偏移来处理。为此,您需要一个时区。一个区域是一个偏移量加上一组处理这些异常的规则,过去和现在。使用 aZoneId获取ZonedDateTime. 在 Stack Overflow 上搜索许多帖子。

我不知道您的问题中的“州代码”是什么意思。如果您指的是一个国家/地区的州或省,则在所有情况下都不会直接映射到时区,因此没有用。

请在发布前搜索并研究 Stack Overflow。这些问题已经讨论过很多次了。

于 2016-12-02T06:04:48.353 回答