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

Другие вопросы по тегам