Невозможно изменить часовой пояс веб-приложения 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.

Заранее спасибо.


person Jafar Ali    schedule 14.03.2013    source источник
comment
спасибо лев, но это не то, что я ищу.   -  person Jafar Ali    schedule 20.03.2013


Ответы (3)


Добавьте эту строку:

format.setTimeZone(TimeZone.getTimeZone("IST"));
person Barney    schedule 14.03.2013
comment
это лучшее место для размещения этого кода в моем веб-приложении, чтобы его можно было установить, как только приложение появится на сервере. - person Jafar Ali; 14.03.2013
comment
Поместите эту строку сразу после инициализации вашего SimpleDataFormat - person Barney; 14.03.2013

Попробуй это

    SimpleDateFormat f = new SimpleDateFormat("yyyyy.MMMMM.dd GGG hh:mm aaa -- z");
    f.setTimeZone(TimeZone.getTimeZone("IST"));
    System.out.println(f.format(new Date()));
person happy    schedule 14.03.2013

Ваш вопрос сбивает с толку. Это действительно время США? 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.

person BalusC    schedule 14.03.2013