public class TrustedTime {
private static long internetTime;
private static long updateTime;
/** this needs to happen once */
public static void updateInternetTime(long time) {
updateTime = SystemClock.elapsedRealtime();
internetTime = time;
}
public static long currentTimeMillis() {
long sinceUpdate = SystemClock.elapsedRealtime() - updateTime;
return internetTime + sinceUpdate;
}
}
# 1 楼答案
假设你知道如何从互联网上获取一次以毫秒为单位的当前时间
这只是一个简单的数学问题,计算互联网时间有效时与现在之间的差异
但是如果你真的需要信任时间,那就不要使用客户时间。你不能信任客户端软件。当你上传东西时,有一个服务器有一个用户不能篡改的本地可信时间,用它代替。换句话说,不需要为客户机发送时间戳,因为服务器知道当前时间