Can I get local date and time in Calendar object using State Code , GMT Offset and day light saving information?

时间:2016-12-02 05:18:01

标签: java date calendar localtime localdate

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);

1 个答案:

答案 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。这些问题已经多次涉及。