Android:获取两个时区之间的时间差(秒)
问题描述:
我是Android新手。Android:获取两个时区之间的时间差(秒)
如何在Android中以秒为单位获得两个时区之间的差异?
例如,亚洲/德黑兰(+4:30)和亚洲/巴格达(+3:00)之间的差异为5400秒(1:30小时)。
答
问题就迎刃而解了:
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;
}
答
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);
这是基本的数学。 (小时* 60 * 60)+(分钟* 60)=总秒数。数学在任何语言,纸面上或使用计算器都是一样的。 –