我有网络应用程序。它显示美国时间。我想让它显示印度时间。
我尝试过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项目。
提前致谢。
答案 0 :(得分: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()));
答案 1 :(得分:1)
添加以下行:
format.setTimeZone(TimeZone.getTimeZone("IST"));
答案 2 :(得分: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
上下文参数以在应用范围内应用此更改。另请参阅Set a default time zone for f:convertDateTime。