现在是北京时间几点钟?
这个问题的提出,说明题主可能是刚从外部网络回到百度,也可能是刚拿起手机看时间。 此时,如果打开你的日历APP或者邮箱,应该是这样的(安卓系统) 然而,如果你刚刚从内部网络出来,比如刚刚离开办公室、教学楼或者刚刚关闭电脑,那么时间应该还是正常的——比如,你所在的时区是东八区,现在时间是2018年4月16日上午10点30分,那在内部网络时间应该是2018年4月16日18点30分。
为什么相差了八个多小时呢?因为当你处于内部网时,系统会自动将本地时间与UTC(世界统一时间)进行换算,并将换算结果储存到本地。而当你切换到了外网时,又会重新获取一个UTC时间值并转换为当地时区时间。所以有如下公式: 所以,只要你能确定当前位置,就可以通过上面的公式算出当前网络接入的时间差值。然后就能轻易推算出当前具体的时间值了。 当然,以上是基于“正常”情况下的分析。但是,如果出现了运营商或者路由器延时、跳时等情况,可能会让这种简单算法产生误差,需要结合硬件时钟等更复杂的方式进行校正。
上面介绍的是利用移动终端的自带应用程序判断接入网络的情况并进行换算。如果对这些程序的运行效率不满意或者有其他特殊需求,也可以借助第三方软件实现同样的目的。比如WifiTime这款APP就可以轻松实现根据Wifi信号来源和时间戳判断接入路径和时间的功能。 下图为该款应用的部分主界面: 另外,一些浏览器也有此相关功能。比如在Chrome浏览器的地址栏中输入下列字符串,并按Enter键,即可看到当前网络的接入信息: