8

我的服务器在美国,我正在通过网络浏览器访问印度的应用程序,在这种情况下TimeZone.getDefault()会返回什么?如果它返回基于印度的时区,它将返回什么?

我已将控制面板设置更改为系统的不同区域设置和不同时区,即使它没有根据我的设置进行更改。

我已经把代码写成了休闲...

def dateFormat = DateFormat.getDateTimeInstance(DateFormat.DEFAULT,DateFormat.DEFAULT,Locale.getDefault())
dateFormat.setTimeZone(TimeZone.getDefault())
4

3 回答 3

8

它将返回执行 JVM TimeZone.getDefault() 的时区。因此,如果应用程序在印度的服务器上运行,它将类似于“亚洲/加尔各答”。

于 2013-02-15T13:25:51.937 回答
1

默认时区通常是为主机设置的,而不是用户或应用程序。在您的情况下,它将是您的应用程序正在运行的服务器的默认时区,很可能是美国时区。

尝试date +%Z在服务器上的 Unix 控制台中运行命令。

于 2013-02-15T13:29:23.633 回答
0

这是“这段代码在哪里执行”的问题。如果您正在谈论正在由印度的浏览器访问的 Web 应用程序,那么您获得的日期类型将是在美国。好吧,除非您为用户会话设置正确的语言环境和时区。在像Vaadin这样的框架中,一旦您调用setLocale()应用程序,它也会设置时区,但在其他平台中,您可能必须显式使用具有特定时区的日期格式化程序。

于 2013-02-15T13:25:07.153 回答