2017-02-13 4 views
1

У нас есть система, которая отображает даты, основанные на выбранном пользователем Locale. Клиент запрашивает, чтобы формат даты локали был похож на формат en_US. Проблема в том, что невозможно выполнить изменения кода.Переопределить формат даты и времени Locale, на уровне JVM

Есть ли способ изменить формат даты для часовой пояс на уровне JVM? Может быть, что-то похожее на IANA timzezone change TZUpdater?

спасибо.

Редактировать: Это не дубликат, а ссылки в комментариях не похожи. Я не хочу устанавливать локальную по умолчанию, я хочу сопоставить формат даты для новозеландских английских дат, чтобы они были похожи на формат даты для форматирования даты на английском языке.

+1

См. Следующие вопросы: [1] (http://stackoverflow.com/questions/8809098/how-do-i-set-the-default-locale-for-my-jvm), [2] (http://stackoverflow.com/questions/64038/setting-java-locale-settings) – apangin

+0

Возможный дубликат [как установить языковой стандарт по умолчанию для моей JVM?] (http://stackoverflow.com/questions/8809098/ how-do-i-set-the-default-locale-for-my-jvm) – Derlin

+2

Нет, это не дублируется, а ссылки выше не похожи. Я не хочу устанавливать локальную по умолчанию, я хочу сопоставить формат даты для новозеландских английских дат, чтобы они были похожи на формат даты для форматирования даты на английском языке. – user7557454

ответ

3

Форматы даты для данного региона загружены с sun.text.resources.FormatData Resource Bundle. Ресурсы для локалей en_* встроены в rt.jar, то есть существуют в пути класса bootstrap.

Чтобы переопределить ресурсы для данного языкового стандарта, вы должны каким-то образом заменить соответствующий набор ресурсов. Есть несколько способов сделать это, например:

  1. Создайте пустой файл sun/text/resources/en/FormatData_en_NZ.class, поместите его в каталог или в JAR, который предваряется самонастройки путь к классу, используя -Xbootclasspath/p:<dir> опцию JVM.
  2. Создайте Java Agent, который регистрирует ClassFileTransformer для изменения данных класса FormatData_en_NZ во время загрузки класса.
  3. Замените или удалите sun/text/resources/en/FormatData_en_NZ.class файл непосредственно в rt.jar (не рекомендуется).
+0

Можете ли вы добавить более подробную информацию о втором подходе? Ели и третьи подходы неприменимы, потому что у нас много экземпляров приложений для производства, и мы не контролируем развертывание и обслуживание производства. –

+0

@yaroslavprokipchyn Что вы подразумеваете под * «не контролируете развертывание и обслуживание» *? Можете ли вы изменить аргументы JVM, используемые для запуска приложения? – apangin

+0

Теоретически, я могу запросить его. Но многие администраторы DevOps и другие будут очень недовольны добавлением новых шагов для выпуска. Спасибо, что ответили –

Смежные вопросы