Настройка часового пояса JVM по умолчанию была изменена
Это предположение, но полностью согласованное. Даты и время, которые печатаются с сокращением часового пояса (EST или EDT), наиболее вероятно, используют часовой пояс по умолчанию JVM. Таким образом, настройка часового пояса по умолчанию была изменена на вашем рабочем сервере WebLogi c. Любая программа, запущенная на сервере, может это сделать. Даже программа, работающая вне WebLogi c в той же JVM, может, если она есть. В любое время.
Часовой пояс по умолчанию устанавливается из системного свойства user.timezone при запуске (или когда программа в JVM впервые что-то делает с часовым поясом, я не уверен). Позднее изменение часового пояса JVM по умолчанию не вернет системное свойство. Для краткой демонстрации:
System.setProperty("user.timezone", "America/New_York");
TimeZone.setDefault(TimeZone.getTimeZone("America/Atikokan"));
System.out.println("TimeZone.getDefault(): " + TimeZone.getDefault().getID());
System.out.println("user.timezone: " + System.getProperty("user.timezone"));
System.out.println("Example java.util.Date: " + new Date());
Запуск этого фрагмента на моем компьютере дал следующий вывод:
TimeZone.getDefault(): America/Atikokan
user.timezone: America/New_York
Example java.util.Date: Thu Mar 19 14:18:03 EST 2020
Вы заметили, что user.timezone
печатается как America/New_York
, но в последней строке упоминается EST
, поэтому не согласен с America/New_York
, что означало бы EDT
, если я не ошибаюсь.
PS Обычно я бы не рекомендовал использовать TimeZone
класс в целом, так как он плохо спроектирован и давно устарел. Я нуждался в этом для этой демонстрации, поскольку java .time, современный Java API даты и времени, не предлагает возможность изменить настройку часового пояса JVM (о которой я знаю). Может быть, они сделали мудрый выбор, не включив его, поскольку, как вы можете видеть, выполнение этого может легко вызвать путаницу.