将日期字符串从时区转换为不同的时区

时间:2012-05-07 15:15:59

标签: java android calendar

我有一个日期,我从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,但时间总是偏离一小时,不知道为什么?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

使用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