gpt4 book ai didi

java - 如何使用 Joda Time 获得 DST 偏移量

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:03:23 27 4
gpt4 key购买 nike

在我的 java 程序中我做了这样的事情

1.)

LocalDateTime currentDateTime = new LocalDateTime();

LocalDateTime newDateTime = new LocalDateTime(currentDateTime);
newDateTime = newDateTime.plusDays(daysOffset);
newDateTime = newDateTime.plusHours(hoursOffset);
newDateTime = newDateTime.plusMinutes(minutesOffset);

稍后在我做的代码中

2.)

boolean newDateTimeIsInWinter =
dateTimeZone.getOffset(newDateTime.toDateTime().getMillis()) == dateTimeZone.getStandardOffset(newDateTime.toDateTime().getMillis());

调用 newDateTime.toDateTime() 可能会导致 java.lang.IllegalArgumentException: Illegal instant due to time zone offset transition

所以我想在 1.) 和 2.) 之间加上这样的东西

if (dateTimeZone.isLocalDateTimeGap(newDateTime))
{
int dstOffsetMinutes = ???;
newDateTime = newDateTime.plusMinutes(dstOffsetMinutes);
}

谁能告诉我 的正确替代品??? 这不像将其设置为 60 那样简单。例如,LHST 时区只有 30 分钟偏移量。

最佳答案

询问DateTimeZome关于夏令时

要确定特定时刻是否处于特定时区的夏令时,请询问 [ DateTimeZone][1]对象。

boolean isStandardTime = DateTimeZone.forID( "America/Montreal" ).isStandardOffset( DateTime.now().getMillis() );

何时使用“本地”类

如果您关心时区、偏移量和夏令时,请不要使用LocalDateTime , LocalDate , 或 LocalTime .那就是DateTime是为了。

当您指的是一般而不是特定地点或时区的日期和/或时间时,请使用“本地”类。例如,如果您想说“圣诞节从 2014-12-25T00:00:00.000 开始”,这意味着在 25 日上午的午夜在任何特定位置。但是 LocalDateTime 可能意味着巴黎的一个 DateTime 但蒙特利尔的不同 DateTime(不同时刻)。

关于java - 如何使用 Joda Time 获得 DST 偏移量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25626362/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com