我需要在不同时区的两个日期之间的时间差。目前,我这样做:
I need to get time difference between two dates in different time zones. Currently I am doing this:
Calendar c1=Calendar.getInstance(TimeZone.getTimeZone("EDT"));
Calendar c2=Calendar.getInstance(TimeZone.getTimeZone("GMT"));
String diff=((c2.getTimeInMillis()-c1.getTimeInMillis())/(1000*60*60))+" hours";
new AlertDialog.Builder(this).setMessage(diff).create().show();
我得到 0
小时。我究竟做错了什么?
I get 0
hours. What am I doing wrong?
getTimeInMillis()
返回的毫秒数的自UTC时代的。换言之,时区无关它
getTimeInMillis()
returns the number of milliseconds since the epoch in UTC. In other words, the time zone is irrelevant to it.
我怀疑你真正想要的:
long currentTime = System.currentTimeMillis();
int edtOffset = TimeZone.getTimeZone("EDT").getOffset(currentTime);
int gmtOffset = TimeZone.getTimeZone("GMT").getOffset(currentTime);
int hourDifference = (gmtOffset - edtOffset) / (1000 * 60 * 60);
String diff = hourDifference + " hours";