当前位置: 首页 > 图文教程 > 网络编程 > Javascript > jQuery 各种浏览器下获得日期区别

Javascript
JavaScript实现Sleep函数的代码
一个可以显示阴历的JS代码
从csdn弄下来的页面预先载入效果
键盘事件中keyCode、which和charCode 的兼容性测试
一个支持ff的modaldialog的js代码
[js+css]点击隐藏层,点击另外层不能隐藏原层
用javascript实现页面打印的三种方法
HTML-CSS群中单选引发的“事件”
一款不错的键盘密码输入js程序
限制文本字节数js代码
静态图片的十一种滤镜效果--不支持Ie7及非IE浏览器。
用javascript动态调整iframe高度的方法
用一段js程序来实现动画功能
javascript实现划词标记+划词搜索功能
javascript 简单高效判断数据类型 系列函数 By shawl.qiu
服务端 VBScript 与 JScript 几个相同特性的写法 By shawl.qiu
禁止F5等快捷键的JS代码
在textarea文本域中显示HTML代码的方法
Javascript之文件操作
修改发贴的编辑功能

Javascript 中的 jQuery 各种浏览器下获得日期区别


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-12   浏览: 365 ::
收藏到网摘: n/a

在系统开发过程中经常会用到系统的当前时间,然而我们遇到的问题确又是各个浏览器返回值不同,就像典型的IE和FF浏览器。 如果在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开始的,所以我们要把获得月份加一。