谷歌Chrome 88新版,中文环境下toLocaleString转换的时间中间没有了空格

背景

众所周知,谷歌浏览器是宇宙第一浏览器。如果你是 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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值