【问题标题】:php date into javascriptphp日期转换成javascript
【发布时间】:2015-06-15 11:46:16
【问题描述】:

我有 php 日期:

<?php
date_default_timezone_set('Europe/London');
 echo date('D M d Y H:i:s O');
?>

和 javascript/jquery 脚本在网站上发布日期:

setInterval(function() {
var d = new Date("<?  echo date('D M d Y H:i:s O'); ?>")
currentHours = d.getHours();
currentHours = ("0" + currentHours).slice(-2);
currentMinutes = d.getMinutes();
currentMinutes = ("0" + currentMinutes).slice(-2);
currentSec = d.getSeconds();
currentSec = ("0" + currentSec).slice(-2);



    $('#timer').text((currentHours +':' +  currentMinutes + ':' + currentSec ));
},

但是 javascript 返回 aN:aN:aN 如何在javascript中插入服务器时间?

【问题讨论】:

  • Date("&lt;? 必须是 Date("&lt;?php
  • 该 JS 代码是从 js 文件还是 PHP 文件运行的?如果它是从 js 文件运行的,则 PHP 代码没有运行。
  • 看起来您返回了一些 NaN(不是数字)。您是否尝试过将脚本拆分为多个部分以查明它开始出错的地方?
  • 你应该使用Ajax

标签: javascript php jquery datetime


【解决方案1】:

您可以简单地将new Date() 用作

<script>
    function myFunction(obj) {
        var today = new Date("<?php echo date('Y-m-d H:i:s')?>");
        var hh = today.getHours();
        var ii = today.getMinutes();
        var ss = today.getSeconds();
        if (hh < 10) {
            hh = '0' + hh
        }
        if (ii < 10) {
            ii = '0' + ii
        }
        if (ss < 10) {
            ss = '0' + ss
        }


        obj.value = hh + ':' + ii + ':' + ss;
    }
</script>

<input type="text" onclick="myFunction(this);">

【讨论】:

  • 是的。但是javascript选择设备计时器而不是服务器。服务器时间已同步,但设备未同步。这就是我需要显示服务器时间的原因
【解决方案2】:

使用代码如下:

我刚刚把new Date("&lt;? echo date('D M d Y H:i:s O'); ?&gt;")换成了

new Date("<?php echo date('D M d Y H:i:s O'); ?>")

它对我有用

var d = new Date("<?php echo date('D M d Y H:i:s O'); ?>")
        alert(d);
currentHours = d.getHours();
currentHours = ("0" + currentHours).slice(-2);
currentMinutes = d.getMinutes();
currentMinutes = ("0" + currentMinutes).slice(-2);
currentSec = d.getSeconds();
currentSec = ("0" + currentSec).slice(-2);



    $('#timer').text((currentHours +':' +  currentMinutes + ':' + currentSec ));

【讨论】:

  • 当您的服务器上启用short_open_tags 时(在大多数商业服务器上),您也可以使用new Date("&lt;?= echo date('D M d Y H:i:s O'); ?&gt;")(注意在&lt;? 之后添加的=)。
  • 但是问题提问者的同样问题可能是他没有启用short_open_tags
  • @lord_linus 很好,但问题是时间是静态的。但我需要显示现场时间。如果 new Date() 则计时器每 1 秒显示一次当前时间,但使用 php 我需要手动更新
  • @lord_lines - 可能是,这就是我提到它需要启用的原因。我并不是说你的回答是错误的,只是说可以通过不同的方式完成;)
  • 然后将 o(哦)替换为 0(零)
【解决方案3】:

您在 php 日期中打错了字,它应该是 0(零)而不是字符串末尾的 O。

setInterval(function() {
var d = new Date("<?  echo date('D M d Y H:i:s 0'); ?>")
currentHours = d.getHours();
currentHours = ("0" + currentHours).slice(-2);
currentMinutes = d.getMinutes();
currentMinutes = ("0" + currentMinutes).slice(-2);
currentSec = d.getSeconds();
currentSec = ("0" + currentSec).slice(-2);



    $('#timer').text((currentHours +':' +  currentMinutes + ':' + currentSec ));
},

另请参阅https://jsfiddle.net/r3b56h2o/ 以获得有效的答案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-05
    • 2020-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-01
    • 1970-01-01
    • 2022-12-13
    相关资源
    最近更新 更多