Javascript setInterval and PHP Date()


Javascript setInterval and PHP Date()

setInterval(function(){
        var ss = "<?php echo Date('Y-m-d H:i:s'); ?>";
        console.log(ss);
    }, 1000);

我有这个小代码。它需要日期一次,然后一直,结果是相同的。

(12) 2014-10-19 19:42:54

我该如何解决它?

如果你试图让一个时钟像任何其他时钟一样增加一秒,你将不得不使用 javascript 来实现它,你通常甚至不需要 PHP 来做到这一点。

编辑答案以使用服务器时间

function checkTime(i) {
    if (i<10) {i = "0" + i};  // add zero in front of numbers < 10
    return i;
}
var today=new Date('<?php print date("F d, Y H:i:s", time())?>');
function setTime() {
    today.setSeconds(today.getSeconds()+1)
    var year=today.getFullYear();
    var month=today.getMonth();
    var day=today.getDate();
    var hour=today.getHours();
    var minute=today.getMinutes();
    var second=today.getSeconds();
    minute = checkTime(minute);
    second = checkTime(second);
    month = checkTime(month);
    var time = year+"-"+month+"-"+day+" "+hour+":"+minute+":"+second;
    console.log(time);
}
setInterval(startTime, 1000);

试试这个:

var unixtime = <?=date('U')?>;
setInterval(function()
{

        var date = new Date();
        date.setTime(++unixtime * 1000);
        var ss = date.getFullYear() + '-' 
                + (date.getMonth() < 9 ? '0' + (date.getMonth() + 1) : (date.getMonth() + 1)) + '-' 
                + (date.getDate() < 10 ? '0' + date.getDate() : date.getDate()) + ' ' 
                + (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ':' 
                + (date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()) + ':' 
                + (date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds());
        console.log(ss);
    }, 1000);

打开呈现的页面源代码,您将看到生成的 HTML 如下所示:

<script>
setInterval(function(){
    var ss = "2014-10-19 20:52:12";
    console.log(ss);
}, 1000);
</script>

PHP 脚本是一个服务器端程序,它输出一些 HTML,浏览器呈现这些 HTML。因此,您面临这种行为也就不足为奇了。

如果你想在javasctipt中创建一个计时器,你需要使用Date对象实例:

setInterval(function() {
    var d = new Date(),
        ss = d.getFullYear() + '-' + d.getMonth(); // etc.. formate you date
    console.log(ss);
}, 1000);

有关可用方法,请参阅Date文档。

您必须在每次 setInterval 调用中更新 JavaScript 中的日期。

当你使用php生成静态代码时,它定义了具有固定日期值的JavaScript函数。此函数的主体不会在每次调用后被覆盖,因为会生成特定的日期。