I am creating an application which gets the local date and time of a person in a Calendar object. I have the following information:
State Code GMT offset Day light saving information
Any kind of help is really appreciated.
// I have the GMTOffset information available to me
LocalDateTime gmtToLocal,gmtTime ;
gmtTime = LocalDateTime.now(ZoneId.of("UTC"));
gmtToLocal = gmtTime.plusHours(GMTOffset);
答案 0 :(得分:0)
您正在将麻烦的旧旧日期时间类(Calendar
)与现代java.time类(LocalDateTime
)混合使用。 不要。专门坚持java.time类。
LocalDateTime
没有时区信息,这就是它的目的。所以不代表时间轴上的一个时刻。对于你的问题,这没有用。
你说你有一个给定的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偏移来处理。为此你需要一个时区。区域是偏移量加上用于处理过去和现在的那些异常的一组规则。使用ZoneId
获取ZonedDateTime
。搜索Stack Overflow的许多帖子。
我不知道你的问题中“国家代码”的含义。如果您指的是某个国家/地区内的州或省,那么不会直接在所有情况下映射到时区,因此没有用。
请在发布前搜索和研究Stack Overflow。这些问题已经多次涉及。