【问题标题】:Converting a date string from a timezone to different time zone将日期字符串从时区转换为不同时区
【发布时间】:2012-05-07 15:15:59
【问题描述】:

我有一个日期,我从这样的 EST 格式的服务器获取

05/07/2012 16:55:55 是月/日/年然后是时间

如果手机不在美国东部时间,我如何将其转换为手机所在的时区?

如果我得到以毫秒为单位的时间也没问题,但我没有

编辑:

好的,现在格式化时时间不正确

                String sTOC = oNewSTMsg.getAttribute("TOC").toString();
                String timezoneID = TimeZone.getDefault().getID();
                DateFormat format = new SimpleDateFormat("MM/dd/yy HH:mm:ss");
                format.setTimeZone(TimeZone.getTimeZone("EST"));
                String newtimezoneID = TimeZone.getDefault().getID();
                Date timestamp = null;
                try{
                    timestamp = format.parse(sTOC);
                    format.setTimeZone(TimeZone.getDefault());
                    timezoneID = format.format(timestamp);
                }catch(ParseException e){

                }

我将其转换为“EST”,然后将该时间格式化为默认的TimeZone,但时间总是相差一个小时,不知道为什么?

【问题讨论】:

  • 您可以将源日期/时间(以 EST 为单位)转换为 UTC 吗?您可以检测手机的时区设置,并根据手机时区将源 UTC 日期时间转换为本地日期时间

标签: java android calendar


【解决方案1】:

使用以下代码获取 UNIX 时间戳:

String serverResp = "05/07/2012 16:55:55";
DateFormat format = new SimpleDateFormat("MM/dd/yy HH:mm:ss");
Date date = format.parse(serverResp);

现在您有了时间戳,您知道如何使用它了。

如果您好奇,这里还有一个涉及转换的问题:Android Convert Central Time to Local Time

【讨论】:

    【解决方案2】:

    使用DateFormat 类将字符串解析为Date。 API文档的介绍请看这里...http://docs.oracle.com/javase/1.5.0/docs/api/java/text/DateFormat.html

    然后您可以为日期创建日历...

    Calendar cal = Calendar.getInstance().setTime(date);
    

    然后您可以使用setTimezone() 将日历上的时区更改为不同的时区。或者只是以毫秒为单位获取时间,使用getTimeInMillis()

    使用 CalendarDateDateFormat 类应该会让您朝着正确的方向前进。

    在此处查看Calendar 文档...http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Calendar.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-11
      • 1970-01-01
      相关资源
      最近更新 更多