两个日期之间的时间差返回NaN


PHP-jQuery: time difference between two dates returns NaN

我试图设置一个计数器,显示从用户登录的那一刻起经过的时间,但当我从数据库获得日期时间时,它一直返回NaN。

<script>
$('document').ready(function()
{
var sess_rec_id = /*record id value*/
    $.ajax({
    type : 'POST',
    url  : 'test.php',
    dataType: 'json',
    data : {last_rec_id: sess_rec_id},
    cache: false,
    success :  function(r)
        {
            var startDateTime = new Date(r.start_time);
            var startStamp = startDateTime.getTime();
            var newDate = new Date();
            var newStamp = newDate.getTime();
            var timer;
            function updateClock() {
                newDate = new Date();
                newStamp = newDate.getTime();
                var diff = Math.round((newStamp-startStamp)/1000);
                var d = Math.floor(diff/(24*60*60));
                diff = diff-(d*24*60*60);
                var h = Math.floor(diff/(60*60));
                diff = diff-(h*60*60);
                var m = Math.floor(diff/(60));
                diff = diff-(m*60);
                var s = diff;
                $("#countup").html(d+" day(s), "+h+" hour(s), "+m+" minute(s), "+s+" second(s)");
            }
            setInterval(updateClock, 1000);
        }
    });
});
</script>

console.log(r.start_time)显示日期为'2016-10-24 13:57:30'

但是,我在浏览器上得到的输出是NaN天(s), NaN小时(s), NaN分钟(s), NaN秒(s)。

有什么想法如何正确解析这个吗?

语法错误:

newStamp = newDate.getTime();

应该是:

newStamp = new Date().getTime();

希望只是这样

我找到了一个解决方案,即在将其传递给ajax调用之前更改mysql查询中的日期格式。我将日期时间格式化为DATE_FORMAT(start_time, '%c/%e/%Y %H:% I:%s'),它成功了。

似乎来自数据库YYYY-MM-DD HH:MM:SS的标准日期格式没有被new date(此处插入日期)解释,因此产生NaN。