我有三个不同的时间:
服务器上的时间 - “周三,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 ”)
答案 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