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