如何将CET时间转换为设备上的本地时间?

时间:2014-02-19 10:58:13

标签: java android time

我有三个不同的时间:

服务器上的时间 - “周三,2014年2月19日11:44 CET

在服务器上开始会议的时间 - “ 12:00h

设备上的时间 - “ 13:49

我需要有时间开始在设备上见面...这个 - > “ 14:00h ”或是时候见到这个了 - > “的11米

我试图通过使用:

来获得它
                    long ts = System.currentTimeMillis();
                    Date localTime = new Date(ts);
                    String gmt_time="12:00h"; 
                    SimpleDateFormat format = new SimpleDateFormat("HH:mm'h'");
                    format.setTimeZone(TimeZone.getTimeZone("GMT"));
                    Date d_date = null;

                        d_date = format.parse(gmt_time);

                    format.setTimeZone(TimeZone.getTimeZone("UTC"));



                     Date fromGmt = new Date(d_date.getTime() + TimeZone.getDefault().getOffset(localTime.getTime()));
                     String new_date=format.format(fromGmt);

但是new_date的结果是“15:00h”(我需要“ 14:00h ”)

2 个答案:

答案 0 :(得分:3)

您假设CET上的GMT = Wed, 19 Feb 2014似乎不正确 - 请参阅here

CET比GMT提前一小时

11:44 CET意味着格林尼治标准时间10:44

因此,当您计算GMT时间和当地时间的偏差时,它会增加一小时。

format.setTimeZone(TimeZone.getTimeZone("GMT"));更改为format.setTimeZone(TimeZone.getTimeZone("CET"));,它应该按预期工作。

答案 1 :(得分:0)

快速找到解决方案

              String cet_time="12.11.14"+" "+"12:00h"; 
            SimpleDateFormat format = new SimpleDateFormat("dd.MM.yy' 'HH:mm'h'");
                    format.setTimeZone(TimeZone.getTimeZone("CET"));

                    Date d_date = format.parse(cet_time);

( new SimpleDateFormat("dd.MM.yy")).format(fromGmt);//new date String
( new SimpleDateFormat("HH:mm'h'")).format(fromGmt);//new time String