【问题标题】:Display UTC date/time into date/time according to the current time-zone根据当前时区将 UTC 日期/时间显示为日期/时间
【发布时间】:2010-11-01 10:32:51
【问题描述】:

我从 Web 获取格式为“yyyy/mm/dd'T'HH:MM:SS'Z'”的日期/时间字符串,它采用 UTC。

现在我必须识别设备的当前时区,然后将这个时间转换为我的本地时间..

我该怎么做,请建议我!!

(仅供参考,目前,UTC 时间是上午 10:25,在印度当前时间是下午 3:55)

【问题讨论】:

    标签: java android datetime


    【解决方案1】:

    尝试使用TimeZone.getDefault() 而不是TimeZone.getTimeZone("GMT")

    来自the docs

    ...你得到一个 TimeZone 使用 getDefault 创建一个 TimeZone 基于时区 程序正在运行。

    编辑:您可以使用SimpleDateFormat 解析日期(那里还有关于格式字符串的文档)。在你的情况下,你想做(未经测试):

     // note that I modified the format string slightly
     SimpleDateFormat fmt = new SimpleDateFormat("yyyy/MM/dd'T'HH:mm:ss'Z'");
     // set the timezone to the original date string's timezone
     fmt.setTimeZone(TimeZone.getTimeZone("GMT"));
     Date date = fmt.parse("1998/12/21T13:29:31Z", new ParsePosition(0));
    
     // then reset to the target date string's (local) timezone
     fmt.setTimeZone(TimeZone.getDefault());
     String localTime = fmt.format(date);
    

    或者,使用两个单独的 SimpleDateFormat 实例,一个用于原始时间,一个用于目标时间。

    【讨论】:

    • @Lei Ryan 感谢支持,请查看我更新的问题
    • @Lei Ryan 但亲爱的我知道如何解析和格式化日期,但想将 UTC 显示为本地时区
    • @Paresh Mayani:你应该在你的问题中这么说。查看我的更新答案
    • @Lei Ryan 这行得通!发现您过去的答案非常有帮助,因此我完成了与您所做的相同的代码。顺便说一句,感谢您的快速响应和支持
    • 你确定这是你得到的格式吗? mm是分钟,MM是月。在几年和几天之间有几分钟看起来很奇怪
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-03
    • 1970-01-01
    • 1970-01-01
    • 2016-06-17
    • 2022-12-17
    • 1970-01-01
    相关资源
    最近更新 更多