2009-11-11 3 views
0

Я пытаюсь преобразовать значение querystring в объект даты Javascript и затем преобразовать его в формат даты ISO.Преобразование параметра querstring в объект даты javascript не удается - NaN

У меня есть три кнопки - один извлекает строку запроса и отображает значение - работает правильно Во-вторых, использует первую функцию для извлечения строки запроса (работы), а затем преобразуется в Date - не удается - получить 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» в качестве аргумента? –

+0

Как выглядит запрос? Насколько мне известно, формат yyyy/mm/dd [hh: mm: ss: ms] лучше всего подходит для создания независимой от локали даты (новая дата ('yyyy/mm/dd')). – KooiInc

+0

Файл dategormat.js находится по адресу http://stevenlevithan.com/assets/misc/date.format.js. Мой запрос: create = '11/11/2009 ' – shikarishambu

ответ

0

отлично работает для меня в Firefox 3.5 и IE 7. 2 вещи, которые я могу думать о том, в строке запроса вы можете случайно набранные в неправильная дата. Как и 10/2009 (такие, как в ламе). Тогда дата не будет правильно анализироваться. Во-вторых, нам нужно будет увидеть date.format.js и посмотреть, что он делает с объектом Date.

+0

Доступен файл date.format.js @ http://stevenlevithan.com/assets/misc/date.format.js. Я пробовал это на IE8 и Firefox 3.0.15 - та же история. – shikarishambu

0

У меня есть решение. Проблема заключается в вашей строке запроса, у вашей даты есть кавычки вокруг нее, и ваш синтаксический анализатор строк также помещает эти кавычки в строку даты. Метод javascript Date очень специфичен в том, что вы проходите, а цитаты заставят его вернуть NAN. Итак, вот ваше легкое решение. В коде просто убедитесь, что вы удалите кавычки из строки даты:

... 
    alert(unescape(strReturn).replace(/'/gi,"")); 
    return(unescape(strReturn.toString()).replace(/'/gi,"")); 
} 
</script> 
Смежные вопросы