前端工程师不可不知的时间和地理坐标知识🔥

2,623 阅读5分钟

关于时间

GMT和UTC

GMT,即格林尼治标准时间,也就是世界时。GMT的正午是指当太阳横穿格林尼治子午线(本初子午线)时的时间。但由于地球自转不均匀不规则,导致GMT不精确,现在已经不再作为世界标准时间使用。

UTC,即协调世界时。UTC是以原子时秒长为基础,在时刻上尽量接近于GMT的一种时间计量系统。为确保UTC与GMT相差不会超过0.9秒,在有需要的情况下会在UTC内加上正或负闰秒。UTC现在作为世界标准时间使用。

所以,UTC与GMT基本上等同,误差不超过0.9秒。

时区

地球自西向东旋转,东边比西边先看到太阳,东边的时间也比西边的早。为了统一世界的时间,1884年的国际经度会议规规定将全球划分为24个时区(东、西各12个时区)。规定英国(格林尼治天文台旧址)为零时区(GMT+00),东1-12区,西1-12区,中国北京处于东8区(GMT+08)。

若英国时间为6点整,则GMT时间为6点整,则北京时间为14点整。

UNIX时间戳或称POSIX时间

计算机中的UNIX时间戳,是以GMT/UTC时间「1970-01-01T00:00:00」为起点,到具体时间的秒数,不考虑闰秒。这么做当然是为了简化计算机对时间操作的复杂度。

比如我的电脑现在的系统时间为2015年2月27日15点43分0秒,因为我的电脑默认时区为东8区,则0时区的时间为2015年2月27日7点43分0秒,则UNIX时间戳为1425022980秒。

js设置浏览器中cookie的过期时间

Chrome浏览器cookie存储的时间是GMT时区的时间,即:北京标准时间-8小时。 查看cookie有效期时默认加8小时就对了。 IE和FF浏览器还是把本地时间写入cookie的过期时间

2038问题

2038年问题是指在使用POSIX时间的32位计算机应用程序上,格林尼治时间2038年1月19日凌晨03:14:07(北京时间:2038年1月19日中午11:14:07)之后无法正常工作

2^32 = 2147483647

时间戳转换 2147483647 -》 2038-01-19 11:14:07

历史上因为时间戳溢出导致的重大事故

1996年6月4日对欧洲航天局来说是黑暗的一天,阿丽亚娜5型运载火箭第一次发射,它携带了四枚昂贵的科学卫星,火箭仅仅升空37秒就变成了天空中的一团火焰。调查显示,故障与硬件无关而与软件有关。一个数据从64位浮点值转变成16位符号整数值后发生整数溢出。这起事故可能是整数溢出导致最昂贵事故,损失超过3亿美元。整数溢出是因为超过数据储存空间的最大容量而发生的错误。16位空间能储存最多32,767个值,32位空间能储存最多2,147,483,647个值。

关于地理坐标

GPS

全球定位系统(Global Positioning System,GPS)是一种以空中卫星为基础的高精度无线电导航的定位系统,它在全球任何地方以及近地空间都能够提供准确的地理位置、车行速度及精确的时间信息.

navigator.geolocation.getCurrentPosition(function (position) {
  console.log(`"经度" + ${position.coords.longitude}`)
  console.log(`"纬度" + ${position.coords.latitude}`)
  console.log(`"准确度" + ${position.coords.accuracy}`)
  console.log(`"海拔" + ${position.coords.altitude}`)
  console.log(`"海拔准确度" + ${position.coords.altitudeAcuracy}`)
  console.log(`"行进方向" + ${position.coords.heading}`)
  console.log(`"地面速度" + ${position.coords.speed}`)
}, function (err) {
// code:返回获取位置的状态
//          0  :  不包括其他错误编号中的错误
// ​		     1  :  用户拒绝浏览器获取位置信息
// ​		     2  :  尝试获取用户信息,但失败了
// ​		     3  :   设置了timeout值,获取位置超时了
}, {
    enableHighAcuracy: false, //位置是否精确获取
    timeout: 5000,            //获取位置允许的最长时间
    maximumAge: 1000          //多久更新获取一次位置
})

互联网地图坐标系分类

  1. WGS84(GPS) WGS 是世界大地测量系统(World Geodesic System)国际标准,一般从国际标准的GPS设备获取的坐标都是WGS84,以及国际地图提供商使用的坐标系。H5中的geolocation.getCurrentPosition获取的就是这个坐标。

  2. GCJ02(火星坐标) 中国标准,国测局02年发布的坐标系。又称“火星坐标”。在中国,必须至少使用“GCJ02”对地理位置进行首次加密。比如谷歌中国、高德、腾讯都在用这个坐标系。

  3. BD09 百度标准,在“GCJ02”的基础上进行二次加密。

以上三者可以互相转换,怎么转换可以google或者百度,网上有很多

最后,再告诉你一个关于地图的冷知识——所有地球坐标系的原点(0,0),都在西非附近的大西洋里,这个点是零度经线,也就是高中学过的本初子午线与赤道的交点。

世界的原点并非空无一物,而漂浮着一个气象浮标,它有个名字,叫“灵魂”(Soul)。而(0,0)这个坐标也有个名字,叫做空虚岛(Null Island)。

avatar

空虚岛上的浮标Station 13010 - Soul 世界的原点叫做空虚岛,岛上飘着一个灵魂,有趣...有趣...

中国的火星坐标系也有个大地原点。。。

交流QQ群:619069335

avatar