JS根据AJAX调用传递的值创建日期对象



我有一个Python脚本,它以XML格式返回一个计算的日期时间,如下所示:

<prev><date>2012,07,16</date><time>22:00:00</time></prev>

虽然我可以更改格式,但我的问题是,当我尝试使用返回的值创建JS日期对象时,我会得到"无效日期":

$.ajax({
        async: false,
        type: "POST",
        url:  "/cgi-bin/prev_hour.py",
        success: function(xml)
        {
                pdate = $(xml).find('date').text();
                ptime = $(xml).find('time').text();
                //alert prints correct date time ex 2012-07-16 22:00:00
        },
        error:function(xhr,err,html)
        {
                alert("FailednreadyState: "+xhr.readyState+"nstatus: "+xhr.status + "nresponseText: "+xhr.responseText);
        }
var max_date = new Date("'" + pdate + ptime + "'");
alert(max_date);

我尝试了几种可能性,比如Python脚本以各种格式返回:

<prev><date>2012/07/16 </date><time>22:00:00</time></prev>
<prev><date>2012,07,16 </date><time>22,00,00</time></prev> 

但是,当我尝试创建JS日期对象时,仍然会得到无效的日期?

请告诉我实现它的正确方法。

您不需要在日期字符串中添加额外的引号,并且在日期和时间组件之间需要一个空格,请尝试:

new Date(pdate + " " + ptime);

尝试使用名为Moment.js 的惊人的日期库

moment("2012/07/16 22:00:00")

从那里你可以通过约会实现一切。

这:

var max_date = new Date("'" + pdate + ptime + "'");

应为:

var max_date = new Date(pdate + ' ' + ptime);

下次遇到此类问题时,请对发送给函数的值发出警报,并查看其外观。

最新更新