欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

了解格林尼治标准时间 UTC CST 时间

最编程 2024-05-08 11:19:19
...

GMT(Greenwich Mean Time)是格林威治标准时间,英国伦敦格林威治定为0°经线开始的地方,地球每15°经度 被分为一个时区,共分为24个时区,相邻时区相差一小时,GMT格式形如Wed Apr 22 2020 22:51:07 GMT+0800

越往东时间越晚,比如日本(东九区)比北京(东八区)晚一个小时。北京在东八区,即GMT+8,所以北京比GMT时间多了8个小时


UTC(Coordinated Universal Time)是世界协调时间(又称世界标准时间、世界统一时间),经严谨计算得到的时间,精确到秒,误差在0.9s以内, 是比GMT更为精确的世界时间,格式为yyyy-MM-dd'T'HH:mm:ss.SSS'Z',如2020-04-22T15:31:52.000Z

UTC和GMT基本可以当作一个时间,只是UTC更加精确。
所以我们平时看到的UTC时间,比东八区早了8个小时


DST(Daylight Saving Time)是夏季节约时间,即夏令时;是为了利用夏天充足的光照而将时间调早一个小时,北美、欧洲的许多国家实行夏令时。


关于CST时间,百度百科的解释如下:
CST可视为美国、澳大利亚、古巴或中国的标准时间。
CST可以为如下4个不同的时区的缩写:
美国中部时间:Central Standard Time (USA) UT-6:00
澳大利亚中部时间:Central Standard Time (Australia) UT+9:30
中国标准时间:China Standard Time UT+8:00
古巴标准时间:Cuba Standard Time UT-4:00

CST时间格式为EEE MMM dd HH:mm:ss CST yyyy,如Wed Apr 24 16:07:58 CST 2019

也就是说,CST在不同环境下指的是不同的时区。
如果当前CST时间是美国中部时间,那就是西六区,即GMT-6;
如果当前CST时间是中国标准时间,那就是东八区,即GMT+8


chrome控制台cookie的Expires/Max-age就是用UTC时间展示,所以会比实际时间早8小时。


image.png

所以我们对cookie设置expires的时候,也要用UTC或GMT时间,例比如下面设置cookie的js代码用了toGMTString方法。

setCookie: function (cname, cvalue, exdays) {
            var date = new Date()
            date.setTime(date.getTime() + (exdays * 24 * 60 * 60 * 1000))
            var expires = 'expires=' + d.toGMTString()
            document.cookie = cname + '=' + JSON.stringify(cvalue) + ';path=/;' + expires
        }

如果不用GMT格式设置expires,结果如下所示,并没有达到预期效果

var date = new Date()
// 设置有效期为6个小时
date.setTime(date.getTime() + 6 * 3600 * 1000)
console.log(date)
document.cookie = 'age=22;expires=' + date.getTime()
image.png


另外推荐一篇时间格式相关bug的文章
https://www.jianshu.com/p/3acd33375c72