背景
今天产品在群里发了下用户反馈的录屏,说用户时间有问题。自己在电脑上试验了下,是正常的呀(原来因为总用谷歌开发验证习惯了,所以导致自己并没有复现出来这个问题)。但是真真实实的录屏在那里,原来是浏览器导致的。
经常用的格式
大多数我们格式化的时间:YYYY-MM-DD HH:mm:ss。
safari支持的格式
YYYY/MM/DD HH:mm:ss,这是safari浏览器支持的格式。
验证
// timestamp = '2022-09-05 23:59:59'
var date = new Date(timestamp);
使用 Safari 4/5(在 Mac OSX 上),Javascript 无法解析格式的日期YYYY-MM-DD,返回NaN而不是预期的纪元时间戳。
解决
如果每次都单独遇到单独替换的话,好麻烦并且可能当时就会忘记兼容safari浏览器,所以写一个公共方法,在new Date之前把时间替换下(因为google是两种时间格式都支持的)
总结
在执行new Date( string ) 的时候,不同浏览器会采用不同的parse,目前chrome两种格式都支持,而Safari只支持yyyy/mm/dd。