如何根据用户偏好的时区和区域设置获取当前日期?

时间:2010-07-02 09:04:13

标签: java

如果我的网络应用程序部署在美国,无论客户所在的国家/地区,我都会获得美国时间。但如果客户在印度,他应该使用时区或地区或用户偏好来获得印度时间。我该怎么办?

Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("US/Mountain"), Locale.US);
System.out.println(calendar.getTime());

输出:2010年7月2日星期五12:15:35 IST 2010 我在这里获得IST时间。但我需要美国/山区时间。

2 个答案:

答案 0 :(得分:1)

您正在打印calendar.getTime()并返回java.util.Date - 而Date.toString()使用默认时区。 (java.util.Date 没有关联的时区或区域设置。)

如果要控制格式设置,请使用具有相应区域设置等的java.text.DateFormat

或者,使用Joda Time这是一个很多更有能力的日期和时间API。

答案 1 :(得分:0)

我认为您的问题是如何获取客户端的本地时间,而不是使用客户端日期格式格式化服务器时间。

在这种情况下,您应该使用客户端的语言环境而不是在创建日历时对其进行硬编码 - 这会将绝对时间(自1970年1月1日以来的毫秒数)转换为适当的时区。

您可以使用ServletRequest.getLocale()来确定客户首选语言环境

希望这会有所帮助。