JS从通过AJAX Call传递的值创建一个Date对象

时间:2012-07-17 07:05:20

标签: javascript

我有一个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("Failed\nreadyState: "+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日期对象时,我仍然得到无效日期?

请让我知道实施它的正确方法。

3 个答案:

答案 0 :(得分:0)

尝试将令人惊叹的lib用于名为Moment.js

的日期
moment("2012/07/16 22:00:00")

从那里你可以用日期来实现一切。

答案 1 :(得分:0)

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

new Date(pdate + " " + ptime);

答案 2 :(得分:0)

此:

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

应该是:

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

下次遇到此类问题时,请对发送给该功能的值发出警告,并查看其外观。