2009-11-11 63 views
0

我想將查詢字符串值轉換爲Javascript日期對象,然後將其轉換爲ISO日期格式。將querstring參數轉換爲javascript日期對象失敗 - NaN

我有三個按鈕 - 一個提取查詢字符串和顯示值 - 正常工作 其次,使用第一函數提取查詢字符串(的作品),然後轉換爲日期 - 失敗 - 得到NaN的 第三,直接通過硬編碼字符串到第二個功能 - 作品。

代碼如下所示。我如何獲得一個querstring值轉換爲Javascript日期

<head> 
<SCRIPT LANGUAGE="JavaScript" SRC="./date.format.js"> 
</SCRIPT> 
</head> 
<script> 
function DateTest(dt) 
{ 
var myDate = new Date(dt); 
alert(myDate); 
var newDate = myDate.format("isoDateTime"); 
document.write(newDate); 
alert(newDate); 
} 

function QueryDateTest(parm) 
{ 
DateTest(getRequestParameter(parm)); 
} 
function getRequestParameter(name) { 
var strReturn = ""; 
    var strHref = window.location.href; 
    if (strHref.indexOf("?") > -1){ 
    var strQueryString = strHref.substr(strHref.indexOf("?")).toLowerCase(); 
    var aQueryString = strQueryString.split("&"); 
    for (var iParam = 0; iParam < aQueryString.length; iParam++){ 
     if (aQueryString[iParam].indexOf(name.toLowerCase() + "=") > -1){ 
     var aParam = aQueryString[iParam].split("="); 
     strReturn = aParam[1]; 
     break; 
     } 
    } 
    } 
    alert(unescape(strReturn)); 
    return(unescape(strReturn.toString())); 
} 
</script> 
<body> 
<input type="button" id="hello-world1" value="QueryString" onClick="getRequestParameter('create');" /> 
<input type="button" id="hello-world2" value="ISODate" onClick="QueryDateTest('create');" /> 
<input type="button" id="hello-world3" value="HardCoded" onClick="DateTest('11/10/2009');" /> 
+0

什麼是你必須爲你的Date類格式函數,採用「isoDateTime」作爲參數? – 2009-11-11 05:23:49

+0

查詢字符串是怎樣查看的?據我所知,yyyy/mm/dd [hh:mm:ss:ms]格式最適合創建與區域無關的日期(新日期('yyyy/mm/dd'))。 – KooiInc 2009-11-11 07:32:18

+0

dategormat.js文件來自http://stevenlevithan.com/assets/misc/date.format.js。 我的查詢字符串是?create = '11/11/2009' – shikarishambu 2009-11-11 15:20:09

回答

0

工作得很好,我在Firefox 3.5和IE 7.2的東西我能想到的,在您的查詢字符串,你可能會在有人誤輸錯誤的日期。就像2009年11月10日(這些就像在美洲駝一樣)。然後日期不會正確解析。其次,我們必須看到date.format.js並查看它對Date對象的作用。

+0

date.format.js文件可用@ http://stevenlevithan.com/assets/misc/date.format.js。 我已經在IE8和Firefox 3.0.15上試了這個 - 同樣的故事。 – shikarishambu 2009-11-11 15:17:45

0

我有你的解決方案。問題在於你的查詢字符串,你的日期已經引用了它,你的查詢字符串解析器也把這些引號放在日期字符串中。 javascript日期方法非常關注你傳入的內容,而引號將使它返回一個NAN。所以這裏是你的簡單解決方案。在你的代碼只是確保你從你的日期字符串刪除引號:

... 
    alert(unescape(strReturn).replace(/'/gi,"")); 
    return(unescape(strReturn.toString()).replace(/'/gi,"")); 
} 
</script>