即使未在Java中选中“ Systems Daylight”选项,在Java中始终启用“夏令时”并始终启用夏令时

时间:2018-09-20 11:33:54

标签: java windows timezone dst

我正在尝试使用

在Java中读取Timezone
String timeZone = TimeZone.getDefault().getId();

如果启用了夏令时,它会给我正确的Timezone,但是如果禁用了夏令时,则会给我GMT的结果。我希望不受系统设置影响而获得GMT。

Java中是否有办法始终将DST的结果设为ON?

例如 转到系统(Windows)-> ChangeDateandTimeSettings->更改时区->将Timezoene设置为UTC + 00:00都柏林,爱丁堡,里斯本,伦敦,现在运行上面的代码并自动调整系统时间,检查是否得到结果“欧洲/伦敦” 现在禁用您将结果作为 GMT 的复选框,在两种情况下,我都希望结果为欧洲/伦敦

1 个答案:

答案 0 :(得分:-1)

也许您可以尝试获取某个时期的天数。

以下方法可找到期间开始日期到期间结束日期之间的天数。这意味着开始日期被计为该期间内的天数,而不是结束日期。例如,1月1日至1月10日总共包括9天。此方法考虑了夏令时,以确保跨DST边界正确地计算天数。

例如,

import org.joda.time.Days;
import org.joda.time.LocalDate;

// …

    public int getDaysInPeriod() {

        final LocalDate start;
        final LocalDate end;
        final int daysInCycle;


        if (end.isBefore(start) || end.isEqual(start)) {
            return 0;
        }
        return Days.daysBetween(start, end).getDays();
    }

希望这会有所帮助。