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

Javascript
DOM相关内容速查手册
[转]JS宝典学习笔记
背景,文字渐变(无闪屏)
一个仿DOS的Loading效果
JavaScript使用prototype定义对象类型
如何用JS获取带“\”字符串的中间值?
如何识别上传前检测的图像是有效的方法
js模拟滤镜的图片渐显效果
如何用javascript去掉字符串里的所有空格
javascript如何判断数组内元素是否重复的方法集锦
控制打印时页眉角的代码
模仿Flash AS效果的导航菜单
页面自定义拖拽布局
js判断浏览器的比较全的代码
又一日历输入效果没考虑兼容性,IE通过
项目添加
[转]prototype 源码解读 超强推荐
JAVASCRIPT对象及属性
JavaScript解决Joseph问题
实例:用 JavaScript 来操作字符串(一些字符串函数)

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-12   浏览: 382 ::
收藏到网摘: 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开始的,所以我们要把获得月份加一。