- 作(zuò)者:admin
- 發表時(shí)間(jiān):2013-07-02 14:17:21
- 來(lái)源:未知
今天在工作(zuò)中遇到這樣一個(gè)問題:使用jquery ui的datepicker日曆控件,獲取選中的日期,并且要将日期轉換成日期對象格式,如:Tue Nov 30 00:00:00 UTC+0800 2010,以便與其他代碼對接。
我的代碼如下:
$("#mydate").datepicker({
showOn: "button",
buttonImage: "images/calendar.gif",
buttonImageOnly: true,
buttonText:"日曆",
onSelect:function(dateText,inst){
alert(dateText);
r = new Date(dateText);
alert(r);
...do something...
}
}
我要實現的效果是:當點擊日曆控件,選中日期時(shí),獲取當前日期,并轉換日期格式賦值給變量r,用于後面更複雜的工作(zuò)。
我們知道(dào),jaascript用來(lái)創建一個(gè)日期對象,返回當前的日期和(hé)時(shí)間(jiān),直接使用new Date,如:
var date = new Date(); alert(date);
輸出的是當前日期和(hé)時(shí)間(jiān),格式為(wèi):Tue Nov 30 00:00:00 UTC+0800 2010。直接可(kě)以使用在項目中,而且在IE和(hé)火(huǒ)狐上(shàng)都正常。
可(kě)是,如果是new Date()接收外部傳來(lái)的參數(shù)如我使用datepicker中用到new Date(dateText)。這個(gè)時(shí)候用火(huǒ)狐和(hé)谷歌(gē)浏覽器(qì)測試,能正常輸出日期格式為(wèi):Tue Nov 30 00:00:00 UTC+0800 2010。但(dàn)是在IE7上(shàng)就杯具了,IE7輸出的結果為(wèi):NaN。
郁悶了一陣子,試過很(hěn)多(duō)方法,最後不得(de)不放棄new Date()這個(gè)原始的方法,從http://jibbering.com/faq/#parseDate找到了一個(gè)轉換函數(shù),代碼如下:
//轉換日期格式
function parseISO8601(dateStringInRange) {
var isoExp = /^s*(d{4})-(dd)-(dd)s*$/,
date = new Date(NaN), month,
parts = isoExp.exec(dateStringInRange);
if(parts) {
month = +parts[2];
date.setFullYear(parts[1], month - 1, parts[3]);
if(month != date.getMonth() + 1) {
date.setTime(NaN);
}
}
return date;
}
不難看出,代碼能将格式為(wèi)“2010-11-26”的日期轉換為(wèi):“Fri Nov 26 00:00:00 UTC+0800 2010 ”的格式。于是,在我的代碼中直接調用這個(gè)函數(shù)處理(lǐ)下就OK。最終代碼:
$("#mydate").datepicker({
showOn: "button",
buttonImage: "images/calendar.gif",
buttonImageOnly: true,
buttonText:"日曆",
onSelect:function(dateText,inst){
alert(dateText);
var r = parseISO8601(dateText); //轉換格式
alert(r);
...do something...
}
}
合作(zuò)
咨詢
建站(zhàn)咨詢