APP开发人员经常会遇见一个bug就是,APP显示的时间不准,或者说APP时间与服务器时间不一致,会导致数据请求、数据显示等各种问题。这时候我们就需要一种机制来解决时间不一致的问题。
/**
* 获取差值
**/
private long getDeltaBetweenServerAndClientTime(Headers headers) {
long deltaBetweenServerAndClientTime=0;
if (headers!=null) {
final String strServerDate = headers.get("Date");
if (!TextUtils.isEmpty(strServerDate)){
final SimpleDateFormat simpleDateFormat = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss z", Locale.ENGLISH);
TimeZone.setDefault(TimeZone.getTimeZone("GMT+8"));
try {
Date serverDate = simpleDateFormat.parse(strServerDate);
deltaBetweenServerAndClientTime = serverDate.getTime()-System.currentTimeMillis();
} catch (ParseException e) {
e.printStackTrace();
}
}
}
return deltaBetweenServerAndClientTime;
}
使用时加上差值:
Date serverTime = new Date(System.currentTimeMillis()+deltaBetweenServerAndClientTime);