【问题标题】:Cannot change time zone of java web application无法更改 Java Web 应用程序的时区
【发布时间】:2013-03-14 08:45:34
【问题描述】:

我有网络应用程序。它显示的是美国时间。我希望它显示印度时间。 我尝试使用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 中。

提前致谢。

【问题讨论】:

  • 感谢狮子,但这不是我要找的。​​span>

标签: hibernate jsf web-applications time zone


【解决方案1】:

试试这个

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

【讨论】:

    【解决方案2】:

    添加这一行:

    format.setTimeZone(TimeZone.getTimeZone("IST"));
    

    【讨论】:

    • 这是将此代码放入我的 Web 应用程序的最佳位置,以便在应用程序在服务器上启动后立即进行设置。
    • 在你初始化你的SimpleDataFormat之后放这行
    【解决方案3】:

    您的问题令人困惑。真的是美国时间吗? JSF 默认为 UTC。如果确实是美国时间(例如 EDT),那么它应该在所有 <f:convertDateTime> 标签的 timeZone 属性中明确配置。您需要做的就是将“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 上下文参数以在应用程序范围内应用此更改。另见Set a default time zone for f:convertDateTime

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-08-28
      • 2015-09-05
      • 1970-01-01
      • 1970-01-01
      • 2023-03-09
      • 1970-01-01
      • 2020-07-22
      相关资源
      最近更新 更多