currentTimeMillis获取时间异常,基于服务器获取当前世界真实时间
1,登录时从服务器上获取当前基础时间及当前开机时间,保存用于后续时间计算
public void onTimeLoaded(String curTime) {
mServerTime = curTime;
TMLUtils.getSpUtils().put(TMLConst.PREF_KEY_BASE_SERVER_TIME, mServerTime);
TMLUtils.getSpUtils().put(TMLConst.PREF_KEY_BASE_ELAPSED_TIME, SystemClock.elapsedRealtime());
}
2.根据前面两个保存的基础时间,通过当前开机时间与前面的开机时间比较可得出时间间隔,再通过前面已保存的服务器时间加上时间间隔即可得出当前世界真实时间
public static long getCurTimeMs() {
String baseServerTime = getSpUtils().getString(TMLConst.PREF_KEY_BASE_SERVER_TIME);
long duration = SystemClock.elapsedRealtime() - getSpUtils().getLong(TMLConst.PREF_KEY_BASE_ELAPSED_TIME);
return getTimeMs(baseServerTime, "yyyy-MM-dd HH:mm:ss") + duration;
}

浙公网安备 33010602011771号