Невозможно изменить часовой пояс веб-приложения Java
У меня есть веб-приложение со мной. Это показывает время США. Я хочу, чтобы это показало индийское время. Я пытался установить свойство Uing System.getProperty().setProperty("user.country","IN");
а также System.getProperty().setProperty("user.variant","IN");
но все же это показывает время использования.
Я даже пытался Locale.setDefault(new Locale("en", "IN"));
но тщетно.
Когда я делаю это
SimpleDateFormat format = new SimpleDateFormat("yyyyy.MMMMM.dd GGG hh:mm aaa -- z");
System.out.println("Date: "+format.format(new Date()));
Результат Date: 02013.March.14 AD 12:29 AM -- GMT-08:00
, Что я делаю неправильно.
Это проект JSF 1.1 и Hibernate 3, развернутый в Tomcat 6.
Заранее спасибо.
3 ответа
Добавьте эту строку:
format.setTimeZone(TimeZone.getTimeZone("IST"));
Попробуй это
SimpleDateFormat f = new SimpleDateFormat("yyyyy.MMMMM.dd GGG hh:mm aaa -- z");
f.setTimeZone(TimeZone.getTimeZone("IST"));
System.out.println(f.format(new Date()));
Ваш вопрос сбивает с толку. Это действительно время США? JSF по умолчанию использует UTC. Если это действительно американское время (например, EDT), то оно должно быть явно настроено как таковое в timeZone
атрибут всего <f:convertDateTime>
теги. Все, что вам нужно сделать, это изменить "EDT" на "IST". Но это настолько очевидное решение, что я думаю, что на самом деле вы работаете не по американскому времени, а по UTC.
Ваша попытка решить проблему также сбивает с толку. Вы сказали и отметили, что используете JSF, но вы пытаетесь решить не способом JSF, а простым Java-способом. Это действительно не то, как вы должны конвертировать дату / время в JSF. Вы должны использовать <f:convertDateTime>
для работы, а не SimpleDateFormat
,
В любом случае нужно настроить все <f:convertDateTime>
теги, чтобы явно установить timeZone
приписывать IST
,
<h:outputText value="#{bean.date}">
<f:convertDateTime timeZone="IST" />
</h:outputText>
Обратите внимание, что если бы вы использовали JSF 2.x, то вы могли бы также установить web.xml
параметр контекста, чтобы применить это изменение в масштабе всего приложения. Смотрите также Установка часового пояса по умолчанию для f: convertDateTime.