Форматирование времени Java JFormattedTextfield

У меня возникли проблемы с использованием времени в моем коде:

txtDauer = new JFormattedTextField();
txtDauer.setFormatterFactory(new DefaultFormatterFactory(
    new DateFormatter(DateFormat.getTimeInstance())));

Когда я использую setValue(0) для вышеуказанного поля FormattedText, текстовое поле показывает 01:00:00 вместо 00:00:00.

Та же проблема возникает и в другой строке кода с этим методом:

public static String convertLongToString(Long time) {
    String strtime = new SimpleDateFormat("HH:mm:ss").format(time);
    return strtime;
}

Используя этот метод с «0», он возвращает strtime = «01:00:00».


person Andreas Lenggenhager    schedule 28.02.2012    source источник


Ответы (2)


Проблема заключается в часовом поясе, часовой пояс вашего компьютера по умолчанию — GMT +1.

Решением является установка GMT на +0:

DateFormat df = new SimpleDateFormat("HH:mm:ss");
df.setTimeZone(TimeZone.getTimeZone("GMT"));

Запустить и просмотреть.

person JMelnik    schedule 28.02.2012

Для Date, Date & Time или Time используйте JSpinner с SpinnerDateModel, пример использования SimpleDateFormat

person mKorbel    schedule 28.02.2012
comment
К сожалению, я не могу заменить свое JFormattedTextfield на JSpinner по двум причинам: во-первых, текстовое поле не редактируется пользователем, а во-вторых, это фактически таймер, которым можно управлять с помощью кнопок запуска, паузы и остановки. Но в любом случае, спасибо за ваши усилия. - person Andreas Lenggenhager; 28.02.2012