Android如何在android中获得两个时区之间的时差?

sam*_*sam 9 java timezone android

我需要在不同时区的两个日期之间获得时差.目前我这样做:

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();
Run Code Online (Sandbox Code Playgroud)

我得到0几个小时.我究竟做错了什么?

Jon*_*eet 15

getTimeInMillis()返回自UTC时代以来的毫秒数.换句话说,时区与它无关.

我怀疑你真的想要:

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";
Run Code Online (Sandbox Code Playgroud)