【问题标题】:Javascript setInterval and PHP Date()Javascript setInterval 和 PHP Date()
【发布时间】:2014-10-19 17:48:43
【问题描述】:
setInterval(function(){
        var ss = "<?php echo Date('Y-m-d H:i:s'); ?>";
        console.log(ss);
    }, 1000);

我有这个小代码。它需要 Date 一次,然后一直,结果是一样的。

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

我该如何解决?

【问题讨论】:

  • 那么.. 你想达到什么目的?
  • 我要控制台记录服务器日期和时间,间隔为 1 秒
  • 我不想再粘贴这个视频,但我觉得我必须:Server-Side versus Client-Side
  • Javascript 是客户端,PHP 是服务器端。你不能混合它们

标签: javascript php date setinterval


【解决方案1】:

如果您想拥有一个像任何其他时钟一样以秒为单位增加的时钟,您将不得不使用 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);

【讨论】:

    【解决方案2】:

    试试这个:

    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);
    

    【讨论】:

    • 但是,我想要服务器时间而不是客户端时间
    • @TaxTaxa 检查我的服务器时间答案
    【解决方案3】:

    打开呈现的页面源代码,您会看到生成的 HTML 看起来像这样:

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

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

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

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

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

    【讨论】:

    • 谢谢,我明白原因,但是,我想要服务器时间而不是客户端时间。 js可以获取服务器时间吗?
    【解决方案4】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-24
      • 1970-01-01
      • 2012-07-28
      • 2011-08-13
      • 1970-01-01
      • 2021-03-12
      相关资源
      最近更新 更多