Я использую библиотека IBM MessageFormat
для локализации входящей даты.
Задача здесь состоит в том, чтобы запустить несколько проверок даты, прежде чем показать ее конечному пользователю. Я получаю объект ZonedDateTime, и мне нужно убедиться, что он не выпадает на выходные, что я и делаю, используя функцию getDayOfWeek
.
Моя проблема возникает, когда я пытаюсь преобразовать дату в строку с помощью MessageFormat. Поскольку MessageFormat принимает только объекты java.util.Date
, я конвертирую свой ZonedDateTime -> Instant
-> Date. К сожалению, этот метод приводит к тому, что мой понедельник становится воскресеньем, как показано ниже.
Я заметил, что эта потеря происходит при преобразовании Date
. Это связано с тем, что объект Date.toString() вызывается MessageFormat, а первый использует часовой пояс JVM по умолчанию (в моем случае PST). В результате мой UTC неявно преобразуется в PST, и я теряю день.
Любые идеи, как решить эту проблему? Есть ли что-нибудь еще, что я могу передать в MessageFormat? Есть ли способ использовать Date, но не получить это нежелательное поведение? Есть ли другая библиотека локализации, которую я могу использовать?
toString()
классаDate
будет печатать его, используя местный часовой пояс. - person Hari Menon   schedule 23.06.2020