Posted in Javascript onDecember 22, 2008
如果在IE下执行:
var currentDate = new Date(); alert(currentDate.getYear());
会弹出2008,但是在FF下就是108,这是为什么呢?
首先了解一下“格林威治标准时 (GMT)”时间,它是从1900年开始,我们来看一下这个运算表达式:108 + 1900 = 2008
原因是FF没有加上1900这个年份,然后代码如下:
/** * 获得当前的日期 * * @return {} */ function getCurrentDate() { var userAgent = navigator.userAgent.toLowerCase(); // 因IE的年为2008和FF为108,判断 var currentYear = currentDate.getYear(); if ($.browser.mozilla) { currentYear += 1900; } var currentDateStr = currentYear + '-' + (currentDate.getMonth() + 1) + '-' + currentDate.getDate(); return currentDateStr; };
问题解决了,测试成功
后来又在GOOGLE浏览器chrome下运行系统竟然也遇到了同样的问题……
大家看看这个判断:
if ($.browser.mozilla)
这里判断是否为FF浏览器,上面的代码已经通过测试,那么GOOGLE浏览器怎么办呢?
同样我也做了一个判断:
var userAgent = navigator.userAgent.toLowerCase();
var chrome = /chrome/.test(userAgent);
这里套用jQuery的浏览器判断方法,用正则表达式获得浏览器的一系列参数,然后查询有没有chrome字符串,有就是GOOGLE的浏览器,所以最后的代码就是:
/** * 获得当前的日期 * * @return {} */ function getCurrentDate() { var userAgent = navigator.userAgent.toLowerCase(); //判断是否为google的浏览器 var chrome = /chrome/.test(userAgent); var currentDate = new Date(); // 因IE的年为2008和FF为108,判断 var currentYear = currentDate.getYear(); if ($.browser.mozilla || chrome) { currentYear += 1900; } var currentDateStr = currentYear + '-' + (currentDate.getMonth() + 1) + '-' + currentDate.getDate(); return currentDateStr; };
其他浏览器按照逻辑推就可以了
最后还有一点要注意的就是获得月份的方法:currentDate.getMonth() + 1,因为日期在最初设计的时候是从0开始的,所以我们要把获得月份加一。
jQuery 各种浏览器下获得日期区别
声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
Reply on: @reply_date@
@reply_contents@