0

我有网络应用程序。它显示的是美国时间。我希望它显示印度时间。我已经尝试设置属性使用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。我究竟做错了什么。

它是部署在 tomcat 6 中的 JSF 1.1 和 Hibernate 3 项目。

提前致谢。

4

3 回答 3

2

尝试这个

    SimpleDateFormat f = new SimpleDateFormat("yyyyy.MMMMM.dd GGG hh:mm aaa -- z");
    f.setTimeZone(TimeZone.getTimeZone("IST"));
    System.out.println(f.format(new Date()));
于 2013-03-14T08:51:02.017 回答
1

添加这一行:

format.setTimeZone(TimeZone.getTimeZone("IST"));
于 2013-03-14T08:51:58.787 回答
0

你的问题令人困惑。真的是美国时间吗?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 设置默认时区

于 2013-03-14T11:11:26.503 回答