#java #datetime #date #internationalization
#java #datetime #Дата #интернационализация
Вопрос:
Я использую joda DateTime для всех манипуляций с датой и временем в моем веб-проекте. Существует некоторое планирование и конкретная реализация задачи. Я пытаюсь сделать этот проект интернационализированным с помощью Locale
. Теперь дело в том, что я увидел, что DateTime печатается как 2011-01-01T00:00:00.000 05:30
, с помощью new DateTime()
которого создается объект DateTime (это часть вышеупомянутого планирования, я создал расписание, в котором экземпляр date создается и сохраняется таким образом). Я тестирую с той же машины, на которой разрабатываю программное обеспечение. Итак, если пользователь из Франции, Италии или США заходит на этот веб-сайт и использует его, а также создает расписание, то каким будет представление этой даты для них?
Будет ли это зависящим от сервера или от клиента (под специфичным для клиента я подразумеваю, что если я установлю языковой стандарт на сервере, выбранный пользователем, это не связано с javascript)?
Должен ли я явно использовать Locale для создания этого экземпляра date? Я могу легко получить этот язык. Тогда как я могу использовать Locale
для создания объекта DateTime или create Date
или Calendar
а затем создавать DateTime
с помощью этого Date
?
Спасибо и с уважением.
Ответ №1:
DateFormat — это то, что вы ищете. Вы можете локализовать дату в любом языковом стандарте.
Лучше всего использовать языковой стандарт браузера.
Комментарии:
1. Спасибо @Costis Aivalis. Фактически печать
2011-01-01T00:00:00.000 05:30
означает, что для нее установлено значение DateTimeZone IST.DateTime#toString()
Метод возвращает экземпляр DateTime вyyyy-MM-dd'T'HH:mm:ss.SSSZZ
формате. Где ‘Z’ представляет часовой пояс. Мой вопрос означает, что если сервер расположен в Индии, то для пользователя с часовым поясом «America / Los_Angeles» будет установлен часовой пояс IST, не так ли? Теперь я нашел решение: явно установив часовой пояс с помощьюnew DateTime(DateTimeZone.UTC)
.