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

Java 如何根据时区、区域设置或用户偏好获取当前日期?,java,Java,如果我的web应用程序部署在美国,无论客户的国家是什么,我都会给我们时间。但是,如果客户在印度,他应该使用时区、地区或用户偏好获取印度时间。我该怎么办 Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("US/Mountain"), Locale.US); System.out.println(calendar.getTime()); 输出:2010年7月2日星期五12:15:35 这是我的第一次。但是我需要我们/山区时

如果我的web应用程序部署在美国,无论客户的国家是什么,我都会给我们时间。但是,如果客户在印度,他应该使用时区、地区或用户偏好获取印度时间。我该怎么办

Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("US/Mountain"), Locale.US);
System.out.println(calendar.getTime());
输出:2010年7月2日星期五12:15:35
这是我的第一次。但是我需要我们/山区时间。

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

如果要控制格式,请将
java.text.DateFormat
与适当的区域设置等一起使用


或者,使用一个更适合的日期和时间API开始。

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

在这种情况下,在创建日历时,您应该使用客户端的区域设置,而不是硬编码-这会将绝对时间(自1970年1月1日起的毫秒)转换为适当的时区

您可以使用来确定客户端首选的区域设置

希望这有帮助