我有一个奇怪的问题,当我创建一个具有区域设置的日历时,TimeZone只是还原为本地日历
public void start(Locale locale){ String s = locale.getDisplayName(); System.err.println(s); Calendar c = new GregorianCalendar(locale); System.err.println(c.getTimeZone()); }
这是输出:
español (Argentina) sun.util.calendar.ZoneInfo[id="Europe/Bucharest", //etc more useless date here....
如何从特定的语言环境中获取适当的时间?
简短的答案:您不能。
长话大说:没有“语言环境的正确时区”之类的东西。这仅仅是因为有些国家/地区具有多个时区(例如美国)。时区是一个不同的概念。
无论如何,您正在寻找解决问题的方法。我猜您正在编写Web应用程序,并且看到时区已恢复为服务器默认值。那是典型的情况。双方Locale.getDefault()并TimeZone.getDefault()会返回服务器的相关信息。JVM无法知道“适当的”时区。所以你对此能做些什么?
Locale.getDefault()
TimeZone.getDefault()
DateFormat
在这三个可能的选择中,我始终选择数字1。通过将时区信息添加到用户个人资料中,您可以确定他/她的首选时区是什么,而不管其当前的Web浏览器是什么,等等。请记住一些用户可能想在访问其他国家时使用您的应用程序…