博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
new Date() 在Safari下的 Invalid Date问题
阅读量:7083 次
发布时间:2019-06-28

本文共 1329 字,大约阅读时间需要 4 分钟。

hot3.png

问题复现

var timeStr = '2018-11-11 00:00:00';var time = new Date(timeStr);	// error: Invalid Date...

在safari浏览器下,time为Invalid Date, 导致后面代码执行错误;

其他浏览器诸如chrome,firfox,ie运行正常,time为:Sun Nov 11 2018 00:00:00 GMT+0800 (中国标准时间)。

问题原因

在safari浏览器下,new Date() 无法识别像 YYYY-MM-DD HH:mm:ss、YYYY.MM.DD HH:mm:ss这样的格式,只能识别YYYY/MM/DD HH:mm:ss、YYYY-MM-DDTHH:mm:ss这样的格式,但是chrome,firfox,ie都做了很好的拓展,都能识别。

new Date('2018-11-11 00:00:00')	/* chrome: Sun Nov 11 2018 00:00:00 GMT+0800 (中国标准时间)  (正常)   safari: Invalid Date*/new Date('2018.11.11 00:00:00')	/* chrome: 正常   safari: Invalid Date*/new Date('2018/11/11 00:00:00')	/* chrome: 正常   safari: 正常*/new Date('2018-11-11T00:00:00')	/* chrome: 正常   safari: 正常*/

解决方案

  1. 直接转换时间字符串中的'-'为'/'。
var timeStr = '2018-11-11 00:00:00';var date = new Date(Date.parse(timeStr.replace(/-/g, '/')));
  1. 基于Date创建自己的Date类。
// es6环境 class UnitDate { 	constructor (date) {		let { userAgent } = window.navigator;		if (userAgent.includes('Safari')) {            if (typeof date === 'string') {                date = date.replace(/-/g, '/');                return new Date(date);            }            return new Date(date);        }        return new Date(date);	 } } var date = new UnitDate('2018-11-11 00:00:00');	//正常 var date_2 = new UnitDate('2018.11.11 00:00:00');	//正常 ...

转载于:https://my.oschina.net/huskydog/blog/2876839

你可能感兴趣的文章
13个强大的Linux性能监测工具(八)
查看>>
fsck修复受损的文件系统
查看>>
迅雷Bolt的ClipSubBindBitmap函数特别说明
查看>>
『Island 基环树直径』
查看>>
『点分治及其简单运用』
查看>>
ios app分享的url在微信中打开app分析
查看>>
HPUX cstm无法使用
查看>>
我的友情链接
查看>>
Linux系统文件删除原理
查看>>
C#基础:委托之Action<T>和Func<T>的用法
查看>>
国内常用的yum源
查看>>
vCenter Server 5.5配置独立Oracle 11g R2数据库
查看>>
批量管理远程Linux系统工具
查看>>
新一代的高可靠性
查看>>
我的友情链接
查看>>
iPhone/Mac Objective-C内存管理教程和原理剖析(三) (四)
查看>>
我的友情链接
查看>>
Linux网络管理工具
查看>>
正则表达式收藏
查看>>
Linux磁盘管理7
查看>>