问题描述
今天给网站增加统计功能,其中一个功能为网站运行时间;
此功能通过当前时间和建站时间算差后计算网站运行时间为n年n天n时n分n秒,代码写完后测试浏览器显示效果时发现,非IE浏览器内核均正常显示,IE浏览器下显示效果的时候发现结果显示为:undefined年undefined天undefined时undefined分undefined秒
寻找问题
通过IE开发者工具控制台执行js代码发现,new Date("2014-01-01 12:11:12").getTime() 在IE下会返回NaN,而其他浏览器可以正常返回毫秒数。
由于毫秒数在IE浏览器下没有正确获得,所以在之后的计算中,计算结果为undefined
解决问题
自定义方法
自定义一个NewDate方法,通过调用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 午夜距离该日期时间的毫秒数。
由于parse()方法参数的日期格式为yyyy/MM/dd,所以需要将现有的日期格式通过replace()方法将日期字符串替换成yyyy/MM/dd格式。
- var date="2014-01-01 12:11:12";
- Date.parse(date.replace(/-/g,"/"));
以上两种方法支持IE和谷歌浏览器,博主已经测试。