- 作(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... } }