APP中时间处理
Published on: | Views: 541.获取系统时间
//Returns the current time in milliseconds since January 1, 1970 00:00:00.0 UTC.
System.currentTimeMillis();
获取自系统启动以后的毫秒值(**不包括**深度睡眠时间)
SystemClock.uptimeMillis();
获取自系统启动以后的毫秒值(**包括**深度睡眠时间)
SystemClock.elapsedRealtime();
2.APP中对时间的处理
2.1 APP对时间没有特别的要求
获取绝对时间:使用System.currentTimeMillis(),这个时间是系统的当前时间,用户可以修改。 获取相对时间:使用SystemClock.elapsedRealtime(),这个时间用户不可修改。
2.2 APP对时间要求比较严格
这种情况一般是同步一次网络时间,然后与本地时间做差值,从而得到正确的时间
2.2.1自建服务器获取网络时间
localTime = SystemClock.elapsedRealtime();
timeMs = getNetworkTimeFromeServer();
timeMs += (SystemClock.elapsedRealtime() - localTime) / 2;
2.2.2使用网络NTP时间源获取时间
2.2.3本地时间同步
public static synchronized void init(long currentNetworkTimeMs){
mIsInit=true;
mTimeOffset=currentNetworkTimeMs- SystemClock.elapsedRealtime();
}
public static long getCurrentTimeMillis(){
if(mIsInit) {
return SystemClock.elapsedRealtime() + mTimeOffset;
}else{
return System.currentTimeMillis();
}
}