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".

2 ответа

Решение

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

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

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

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

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

Другие вопросы по тегам