各种浏览器下获得日期区别(jQuery代码)

5 篇文章 0 订阅
5 篇文章 0 订阅
在系统开发过程中经常会用到系统的当前时间,然而我们遇到的问题确又是各个浏览器返回值不同,就像典型的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开始的,所以我们要把获得月份加一。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值