【问题标题】:How to get current date based on time zone or locale, or user preference?如何根据用户偏好的时区和语言环境获取当前日期?
【发布时间】:2010-07-02 09:04:12
【问题描述】:

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

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

输出:Fri Jul 02 12:15:35 IST 2010 在这里,我得到了 IST 时间。但我需要美国/山区时间。

【问题讨论】:

    标签: java


    【解决方案1】:

    您正在打印返回 java.util.Datecalendar.getTime() - 并且 Date.toString() 使用默认时区。 (java.util.Date 没有关联的时区或语言环境。)

    如果您想控制格式,请使用具有适当语言环境等的java.text.DateFormat

    或者,使用Joda Time,这是一个非常更有效的日期和时间 API。

    【讨论】:

      【解决方案2】:

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

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

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

      希望这会有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-02-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-11
        相关资源
        最近更新 更多