Часовая разница между Linux и Windows от Java date.getHour () - PullRequest
1 голос
/ 17 сентября 2009

У меня есть некоторый Java-код, который анализирует строку и создает объект Date. В Linux все работает нормально, но в Windows он постоянно начинается в 19:00:00, а не в 00:00:00. Вот код:

if(currTask != null) {
            if((m = p0.matcher(currTask)).matches()) {
                date = new Date(Long.valueOf(m.group(2)) - Long.valueOf(m.group(1)));
            }
            else if((m = p.matcher(currTask)).matches()) {
                date = new Date(System.currentTimeMillis() - Long.valueOf(m.group(1)));
            }

            return padded(date.getHours())+":"+padded(date.getMinutes())+":"+padded(date.getSeconds());
        }

Возвращаемое значение является проблемой в Windows. Не противоречит ли это тому, как один из методов Дейта работает в Windows, а не в Linux? Спасибо за вашу помощь.

  • Ken

Ответы [ 2 ]

6 голосов
/ 17 сентября 2009

Убедитесь, что ваш часовой пояс одинаков на обеих платформах ... я думаю, что это не так. (Распечатайте TimeZone.getDefault().getDisplayName(), чтобы узнать значение по умолчанию.)

Однако вы не должны использовать Date.getHours() / getMinutes() / getSeconds() / getSeconds(); они устарели. Вы можете использовать Calendar ... или вы можете прикусить пулю и использовать Joda Time , что намного лучше API даты и времени.

Как выглядит ваш вклад и каков будет результат?

2 голосов
/ 17 сентября 2009

Разница должна быть в вашем регионе. Есть переменные среды, которые влияют на это в Linux. Дай угадаю: ты в EST (GMT-5)?

...