Android:获取两个时区之间以秒为单位的时差

Android:获取两个时区之间以秒为单位的时差,android,Android,我是Android新手 在安卓系统中,如何获得两个时区的秒差 例如,亚洲/德黑兰(+4:30)和亚洲/巴格达(+3:00)之间的差异为5400秒(1:30小时)。DateFormat df1=new SimpleDateFormat(“yyyy-MM-dd HH:MM:ss”); //现在应该以毫秒为单位计算时区 df1.setTimeZone(TimeZone.getTimeZone(“”); df2.setTimeZone(TimeZone.getTimeZone(“”); //计算差异并计

我是Android新手

在安卓系统中,如何获得两个时区的秒差

例如,亚洲/德黑兰(+4:30)和亚洲/巴格达(+3:00)之间的差异为5400秒(1:30小时)。

DateFormat df1=new SimpleDateFormat(“yyyy-MM-dd HH:MM:ss”);
//现在应该以毫秒为单位计算时区
df1.setTimeZone(TimeZone.getTimeZone(“”);
df2.setTimeZone(TimeZone.getTimeZone(“”);
//计算差异并计算小时数
长微分毫秒=df1-df2;
long diffInSec=时间单位毫秒到秒(diffInMillisec);
问题已解决:

int loc2 = TimeZone.getTimeZone("Asia/Tehran").getRawOffset();
int loc1 = TimeZone.getTimeZone("UTC").getRawOffset();
return (loc2 - loc1) / 1000;
要更准确地计算(使用夏季日间光照时间):


这是基础数学。(小时*60*60)+(分钟*60)=总秒数。数学在任何语言、纸上或使用计算器时都是相同的。您是否也以与df1相同的方式声明了df2?是的,错误是:错误:二进制运算符“-”的操作数类型错误。第一种类型:DateFormat,第二种类型:DateFormat
int loc2 = TimeZone.getTimeZone("Asia/Tehran").getRawOffset();
int loc1 = TimeZone.getTimeZone("UTC").getRawOffset();
return (loc2 - loc1) / 1000;
public int getTimezoneDifferenceInSecond(String zone1, String zone2) {
    Date now = new Date();
    TimeZone timeZone1 = TimeZone.getTimeZone(zone1);
    TimeZone timeZone2 = TimeZone.getTimeZone(zone2);

    int currentOffsetFromUTC = timeZone1.getRawOffset() + (timeZone1.inDaylightTime(now) ? timeZone1.getDSTSavings() : 0);
    int serverOffsetFromUTC = timeZone2.getRawOffset() + (timeZone2.inDaylightTime(now) ? timeZone2.getDSTSavings() : 0);
    return (serverOffsetFromUTC - currentOffsetFromUTC) / 1000;
}