Извините, если это повторная публикация. Я не нашел подходящего ответа.
Не обращайте внимания на передовые методы и использование устаревших API.
Я хочу отформатировать следующую дату «Пн, 19 мая, 02:16:52 EDT 2003» в «ММ / дд / гггг ЧЧ: мм: сс». Опять же, я хочу изменить только выходной формат, и это выполняется с моего ноутбука, который находится в EST.
Мои региональные настройки Windows:
Текущий часовой пояс: Восточное летнее время
Часовой пояс: (GMT-05: 00) восточное время (США и Канада)
Автоматически настраивать часы для перехода на летнее время: установлен
Этот код Java делает это:
Date aDate = new Date("Mon May 19 02:16:52 EDT 2003");
SimpleDateFormat sdf = new SimpleDateFormat( "MM/dd/yyyy HH:mm:ss");
System.out.println("Formatted Date: " + sdf.format(aDate));
Выход
Formatted Date: 05/19/2003 02:16:52
Теперь я изменяю настройку Windows на следующую (снимите флажок только с настройки летнего времени)
Текущий часовой пояс: Восточное летнее время
Часовой пояс: (GMT-05: 00) восточное время (США и Канада)
Автоматически настраивать часы для перехода на летнее время: установлен
Выход:
Formatted Date: 05/19/2003 01:16:52
Вопросов:
- Почему вывод отключен на час?
- Использует ли Java настройки летнего времени Windows даже при форматировании? Я, хотя Java поддерживает свои собственные данные для времени настройки DST для различных часовых поясов.