背景
众所周知,谷歌浏览器是宇宙第一浏览器。如果你是 Chrome 用户,那么谷歌已经给出了公告,它要求应立刻更新至最新的 Chrome 88 版本。
谷歌在公告中说,已有一个重要漏洞被修复。如下图所示
有外媒说此漏洞似乎已经被朝鲜黑客所利用,还建立了一个博客来引诱特定目标,如果中招,受害者即使他们运行的是打过补丁的软件,也会感染他们的机器。虽然每个字都很简单,组合起来却好高端的样子。
关于toLocaleString转换的时间
但Chrome 88版本对js的时间函数toLocaleString做了一些改变,似乎没有理由也没有必要,如果有人知道更深层的理由麻烦留言告知一下。
toLocaleString() 方法返回这个数字在特定语言环境下的表示字符串
- Chrome 88版本
在Chrome 88版本,我们输入代码,以转换时间。
new Date().toLocaleString()
// "2021/2/7上午9:34:38"
大家可以看到,输出的时间中间没有空格
我们换个语言继续输出
new Date().toLocaleString('en')
// "2/7/2021, 9:40:57 AM"
new Date().toLocaleString('ja-JP')
// "2021/2/7 09:41:14"
再来个三哥和严谨国的
new Date().toLocaleString('en-IN')
// "7/2/2021, 9:42:45 am"
new Date().toLocaleString('de-DE')
// "7.2.2021, 09:43:08"
可以看到在中间都有一个空格,中文没有空格。
- Chrome 87版本
在88之前的版本,toLocaleString转换的时间中间是有空格的。
在Chrome 87里
写在结尾
问:为什么会关注这个问题呢?
答:很不幸,最近需要临时维护一个万年老项目。产品那边反馈了一个页面没有加载完全的问题。我当时很纳闷,之前是稳定的,也没变动代码(当然项目经理是不信的)。于是就好好翻了代码,最终在一个时间函数里发现了问题所在。这个toLocaleString转换的时间中间没有了空格导致的split之后,数组没有了第二项,最终报错。追根溯底是谷歌瞎j2更新。。。各位道友注意避坑
部分代码截图:
之前的哥们,往table里写入数据前处理时间,用split方法截取空格来处理的。。。当然,这个锅自然是我背上了。。。
最后给个建议,我们在前端处理时间之类的操作,交给库来操作会省心省力很多,在这里也推荐几个优秀的库,如dayjs、moment