Skip to content

日期 Date 兼容性

一般 直接 new Date() 是不会出现兼容性问题的,而 new Date(datetimeformatstring) 常常会出现浏览器兼容性问题,为什么,datetimeformatstring 中的某些格式浏览器不兼容。

1 无参数

var dateTime = new Date() 所有浏览器都兼容

2 日期参数

2.1 参数为 yyyy-MM-dd

js
const dateTime = new Date('2019-05-18')
  • IE9- 不兼容,IE9+(包含IE9) 兼容
  • 火狐、谷歌兼容

2.2 参数为 yyyy/MM/dd

js
const dateTime = new Date('2019/05/18')

所有浏览都兼容

3 日期时间参数

3.1 参数为yyyy-MM-dd hh:mm:ss

js
const dateTime = new Date('2019-05-18 13:41:00')
  • IE 不管哪个版本,都不兼容
  • 火狐 不兼容
  • 谷歌 兼容

3.2 参数为 yyyy/MM/dd hh:mm:ss

所有浏览都兼容

综上,所有主流浏览器都支持的格式为:

js
const dateTime = new Date('2017/09/12')
js
const dateTime = new Date('2017/09/12 13:42:00')

那么解决方案就是 将 datetimeformatstring 转换成 yyyy/MM/ddyyyy/MM/dd hh:mm:ss 格式化字符串即可,如:

js
const time = '2016-07-20 12:21:12'
const timestart = new Date(time.replace(/-/g, '/'))
js
const s = '2019-05-16'
const s1 = '2019/05/16'
console.log(new Date(s)) // Thu May 16 2019 08:00:00 GMT+0800 (中国标准时间),注意这里是8点
console.log(new Date(s1)) // Thu May 16 2019 00:00:00 GMT+0800 (中国标准时间), 注意这里是0点