发送 php 日期到 javascript 并增加它

Send php date to javascript and increment it

我想使用 php 获取服务器时间,并将其传递给 javascript 变量。 一旦通过,它就会增加。

这是我的代码:

function initTime(date){
var today=new Date(date);
var h=today.getHours();
var m=today.getMinutes();
var s=today.getSeconds();
m = checkTime(m);
s = checkTime(s);
document.getElementById('time').innerHTML = h+":"+m+":"+s;
}
function checkTime(i) {
if (i<10) {i = "0" + i};  // add zero in front of numbers < 10
return i;
}

情况: 用户浏览欢迎页面,服务器时间按javascript发送和接收。

我想增加它,使它成为一个时钟脚本。我不想使用 php 每秒获取服务器时间,因为它会占用更多的服务器资源。

如何使用 javascript 增加它?

您可以将 php 变量放入隐藏输入中:

<input id="your_input" value="<?php echo $my_var; ?>">

并在 javascript 中获取它:

my_var = document.getElementById('your_input').value;

两种方式。首先,使用 moment.js:

setInterval(function() {
    document.getElementById('time').innerHTML = moment().format('HH:mm:ss');
},1000);

或使用您的功能:

function initTime(date){
var today=new Date(date);
var h=today.getHours();
var m=today.getMinutes();
var s=today.getSeconds();
m = checkTime(m);
s = checkTime(s);
document.getElementById('time').innerHTML = h+":"+m+":"+s;
}
function checkTime(i) {
if (i<10) {i = "0" + i};  // add zero in front of numbers < 10
return i;
}

setInterval(initTime(date),1000);

我发现另一个 question 基本上是在同一件事之后。使用 php:

中的毫秒数初始化 JS 日期
<script type="text/javascript">
    var d = new Date(<?php echo time() * 1000 ?>);
</script> 

这是一个 jQuery clock plugin,您可以使用它来将开始时间提供给(您的服务器时间)。把它们放在一起,它会是这样的:

<script type="text/javascript">
    var d = new Date(<?php echo time() * 1000 ?>);
    $("#clock").clock({"timestamp":d.getTime()});
</script> 

您可以只在某个地方输出 PHP 日期,或者在全局变量中,或者作为数据属性在您可以获得的地方

<div id="time" data-now="<?php echo time() * 1000; ?>"></div>

然后是

var elem  = document.getElementById('time');
var timer = setInterval(initTime, 1000);

function initTime() {
    var time = +(elem.getAttribute('data-now')),
    time = time + 1000; // add one second

    var today = new Date( time ),
        h = today.getHours(),
        m = today.getMinutes(),
        s = today.getSeconds();

        m = checkTime(m);
        s = checkTime(s);

    elem.innerHTML = h + ":" + m + ":" + s;
    elem.setAttribute('data-now', today.getTime());
}

function checkTime(i) {
    if (i < 10) {
        i = "0" + i
    }; // add zero in front of numbers < 10
    return i;
}

FIDDLE