我正在尝试设置一个计数器,显示从用户登录的那一刻开始经过的时间,但是当我从数据库中获取日期时,它会一直返回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天,NaN小时,NaN分钟,NaN秒(s)。
任何想法如何正确解析?
答案 0 :(得分:0)
您遇到语法错误:
newStamp = newDate.getTime();
应该是:
newStamp = new Date().getTime();
希望它就是这样。
答案 1 :(得分:0)
我找到了一个解决方案,即在将其传递给ajax调用之前更改mysql查询中的日期格式。我将日期时间格式化为DATE_FORMAT(start_time,&#39;%c /%e /%Y%H:%i:%s&#39;)并且它有效。
似乎数据库YYYY-MM-DD HH:MM:SS的标准日期格式不是由新日期解释(此处为插入日期),因此导致NaN。