0

我正在尝试将查询字符串值转换为 Javascript 日期对象,然后将其转换为 ISO 日期格式。

我有三个按钮 - 一个提取查询字符串并显示值 - 正常工作第二,使用第一个函数提取查询字符串(工作)然后转换为日期 - 失败 - 获取 NaN 第三,将硬编码字符串直接传递给第二个函数 - 工作.

代码如下所示。如何获取要转换为 Javascript 日期的 querstring 值

<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');" />
4

2 回答 2

0

在 Firefox 3.5 和 IE 7 中对我来说工作得很好。我能想到的两件事,在您的查询字符串中,您可能不小心输入了错误的日期。就像 ll/10/2009 一样(就像我在 llama 中一样)。然后日期将无法正确解析。其次,我们必须查看 date.format.js 并查看它对 Date 对象做了什么。

于 2009-11-11T07:36:47.417 回答
0

我有你的解决方案。问题出在您的查询字符串中,您的日期周围有引号,并且您的查询字符串解析器还将这些引号放在日期字符串中。javascript Date 方法对您传入的内容非常讲究,引号会使其返回 NAN。所以这是你的简单修复。在您的代码中,只需确保从日期字符串中删除引号:

...
    alert(unescape(strReturn).replace(/'/gi,""));
    return(unescape(strReturn.toString()).replace(/'/gi,""));
}
</script>
于 2009-11-11T15:49:50.227 回答