2017-06-22 74 views
0

我是Android新手。Android:获取两个时区之间的时间差(秒)

如何在Android中以秒为单位获得两个时区之间的差异?

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

+0

这是基本的数学。 (小时* 60 * 60)+(分钟* 60)=总秒数。数学在任何语言,纸面上或使用计算器都是一样的。 –

回答

0

问题就迎刃而解了:

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; 
} 
1
DateFormat df1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 

//you should now have timezone calculated in miliseconds 
df1.setTimeZone(TimeZone.getTimeZone("<timezone_you_want>")); 
df2.setTimeZone(TimeZone.getTimeZone("<timezone_you_want>")); 

//do the difference and calculate hours 
long diffInMillisec = df1 - df2; 
long diffInSec = TimeUnit.MILLISECONDS.toSeconds(diffInMillisec); 
+0

它在df1上有错误 - df2 – ingenious

+0

您是否也声明df2与df1相同? –

+0

是的,错误是:错误:二进制运算符的操作数类型错误' - ' 第一种类型:DateFormat, 第二种类型:DateFormat – ingenious

相关问题