Получайте часовой пояс всегда, если в Java включено летнее время, даже если опция «Дневной свет» не включена в Java. - PullRequest
0 голосов
/ 20 сентября 2018

Я пытаюсь прочитать Timezone в Java, используя

String timeZone = TimeZone.getDefault().getId();

Это дает мне правильное значение Timezone, если летнее время включено, но если оно отключено, оно дает мне результат в GMT,Я ожидаю, что не получу GMT, независимо от настроек системы.

Есть ли способ в Java всегда получать результаты DST как ON?

Например, Goto Systems(Windows) -> ChangeDateandTimeSettings -> Изменить часовой пояс -> Установите Timezoene на UTC + 00: 00. В Дублине, Эдинбурге, Лиссабоне, Лондоне теперь запустите вышеуказанный код с автоматическим изменением времени системы, как проверено, вы получаете результат "Европа / Лондон« теперь снимите флажок, вы получите результат как GMT , в обоих случаях я хочу получить результат как Европа / Лондон

1 Ответ

0 голосов
/ 20 сентября 2018

Может быть, вы можете попытаться получить количество дней в определенном периоде.

Приведенный ниже метод находит количество дней между датой начала периода и датой окончания периода.Это означает, что начальная дата считается днями внутри периода, а не конечной датой.Например, с 1 по 10 января включает в себя всего 9 дней.Этот метод учитывает переход на летнее время для обеспечения правильного подсчета дней за пределами летнего времени.

Например,

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

Надеюсь, это поможет.

...