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