【转】IE浏览器new Date()带参返回undefined解决方法

问题描述

今天给网站增加统计功能,其中一个功能为网站运行时间:

此功能通过当前时间和建站时间算差后计算网站运行时间为n年n天n时n分n秒,代码写完后测试浏览器显示效果时发现,非IE浏览器内核均正常显示,IE浏览器下显示效果的时候发现结果显示为:undefined年undefined天undefined时undefined分undefined秒。

经过排查,发现在IE11下,new Date(“2017-09-01 15:16:16”)返回undefined。

解决问题

方法一:自定义方法
自定义一个NewDate方法:

function NewDate(str){  
  if(!str){  
    return 0;  
  }  
  arr=str.split(" ");  
  d=arr[0].split("-");  
  t=arr[1].split(":");  
  var date = new Date();   
  date.setUTCFullYear(d[0], d[1] - 1, d[2]);   
  date.setUTCHours(t[0], t[1], t[2], 0);   
  return date;  
}

方法二:通过Date.parse()方法

parse() 方法可解析一个日期时间字符串,并返回 1970/1/1 午夜距离该日期时间的毫秒数。

'2017-09-01 15:16:16'是无法被各个浏览器中,使用 new Date(str) 来正确生成日期对象的。 正确的用法是 '2017/09/01 15:16:16'

基于 '/' 格式的日期字符串,才是被各个浏览器所广泛支持的,‘-’ 连接的日期字符串,则是只在chrome下可以正常工作。

var timestart = new Date(Date.parse('2017-09-01 15:16:16'.replace(/-/g,"/")))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值