Как получить текущую дату на основе часового пояса или локали или предпочтений пользователя? - PullRequest
2 голосов
/ 02 июля 2010

Если мое веб-приложение развернуто в США, я получу время в США независимо от страны клиента. Но если клиент находится в Индии, он должен получить индийское время, используя часовой пояс или локаль или предпочтения пользователя. Что мне делать?

Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("US/Mountain"), Locale.US);
System.out.println(calendar.getTime());

Выходные данные: пт, июль 02 12:15:35 IST 2010 Здесь я получаю время IST. Но мне нужно американское / горное время.

Ответы [ 2 ]

1 голос
/ 02 июля 2010

Вы печатаете calendar.getTime(), который возвращает java.util.Date - и Date.toString() использует часовой пояс по умолчанию.(A java.util.Date не имеет связанный часовой пояс или локаль.)

Используйте java.text.DateFormat с соответствующей локалью и т. Д., Если вы хотите управлять форматированием.

В качестве альтернативы, используйте Joda Time , что является намного более компетентным API даты и времени для начала.

0 голосов
/ 02 июля 2010

Я думаю, что ваш вопрос заключается в том, как получить местное время для клиента, а не форматировать серверное время, используя формат даты клиента.

В этом случае вы должны использовать языковой стандарт клиента, а не жесткийкодирование его при создании календаря - оно преобразует абсолютное время (миллисекунды с 1 января 1970 года) в соответствующий часовой пояс.

Вы можете использовать ServletRequest.getLocale () для определения клиентовпредпочитаемый язык:

надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...