在项目中要求保存一个Cookie的值,并在当天指定时间失效,所以我使用了

expire = new Date();
expire.setHours(18, 0, 0, 0);
Cookies.set('key', 'value', {expires: expire});

设置完成后才Chrome后台查看cookie值时发现显示的过期时间比我设置的时间还要早:

Chrome中显式的Cookie时间

第一次看到这个我是一头雾水,以为是代码中哪里错了,经过反复查看官方文档和我的代码,确定没有问题,那么问题就只有在浏览器上了。

经过查找网上的资料,原来是时间显示格式的问题,以下是整理的关于时间的基本知识:

  • GMT(Greenwich Mean Time),格林威治时间,规定太阳每天经过英国伦敦的皇家格林尼治天文台的时间为中午12点。
  • UTC(Coodinated Universal Time),协调世界时,又称世界统一时间、世界标准时间、国际协调时间。由于英文(CUT)和法文(TUC)的缩写不同,作为妥协,简称UTC。在军事中,协调世界时会使用“Z”来表示。又由于Z在无线电联络中使用“Zulu”作代称,协调世界时也会被称为"Zulu time"。

我们发现,Chrome中记录的Cookie过期时间结尾都有一个“Z”,也就是说Chrome使用的是UTC格式,而北京时间刚好和UTC时间相差8小时,这个问题出在哪里已经一目了然了(我的孤陋寡闻)。

最后修改:2021 年 03 月 17 日
如果觉得我的文章对你有用,请随意赞赏