如果在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開始的,所以我們要把獲得月份加一。