我正在创建一个应用程序,它在日历对象中获取一个人的本地日期和时间。我有以下信息:
州代码 GMT 偏移 夏令时信息
任何形式的帮助都非常感谢。
// 我有可用的 GMTOffset 信息
LocalDateTime gmtToLocal,gmtTime ;
gmtTime = LocalDateTime.now(ZoneId.of("UTC"));
gmtToLocal = gmtTime.plusHours(GMTOffset);
您将麻烦的旧旧日期时间类 ( 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。这些问题已经讨论过很多次了。