如何在Java中使用不同的TimeZone获取当前时间?

bra*_*ter 1 java timezone jsp locale servlets

好的 - 我觉得这个基本问题很愚蠢,但是嘿.

我试图在Java webapp中的不同时区获取当前时间.我尝试了以下明显的解决方案:在我的servlet中,

Calendar localCalendar = Calendar.getInstance(myBean.getTimeZone());

然后我将日历对象作为请求属性'localCalendar'传递给JSP:

It is now: [${requestScope.localCalendar.time}]
in TimeZone ${requestScope.localCalendar.timeZone.ID}
Run Code Online (Sandbox Code Playgroud)

但我的输出似乎忽略了时区设置,即

It is now: [Thu Nov 26 10:01:03 GMT 2009] in TimeZone Indian/Mahe

我猜它与Locale设置有关,有没有办法在另一个时区为我的Locale设置格式化时间?

McD*_*ell 6

内部数据Calendar基本上是:

瞬间可以用毫秒值表示,该值是1970年1月1日格林威治标准时间1970年1月1日00:00:00.90(格里高利)的时间偏差.

所以,long无论你在它上面使用什么操作而且toString没有任何承诺,它都会保持一致.

您希望根据区域设置和时区格式化日期.您可以使用JSTL之类的东西在表示层(JSP)中执行此操作,也可以使用DateFormat格式化bean中的日期,并将值作为字符串返回.