【问题标题】:UTC clock based on server time?基于服务器时间的UTC时钟?
【发布时间】:2013-05-03 01:58:15
【问题描述】:

我有一个 JavaScript 时钟,它可以获取 UTC 时间,它目前可以工作,但时间是基于客户端计算机的。我可以做些什么来代替服务器的时间?我使用 PHP 作为服务器脚本语言。我不想使用 AJAX。

<?php
$year   = date("Y");
$month  = date("m");
$day    = date("d");
$hour   = date("h");
$minute = date("i");
$str    = $year . $month . $day . $hour . $minute;
echo "history.pushState('', 'title', '?q=$str');";
echo "var ct = '$str';";
?>
function dT(){
    var d = new Date();
    d = new Date(d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate(), d.getUTCHours(), d.getUTCMinutes(), d.getUTCSeconds());
    d.setTime(d.getTime());
    v = d.getFullYear() + "" +
            padstr(d.getMonth()) + "" +
            padstr(d.getDate()) + "" +
            padstr(d.getHours()) + "" +
            padstr(d.getMinutes()) + "" + padstr(d.getSeconds());
    if(ct !== v){
        history.pushState('', 'title', '?q=' + v);
        ct = v;
    }
    setTimeout('dT()', 1000);
}
dT();

编辑

    var a = moment().format("<?php echo date("Y-m-d H:i:s", time()); ?>");
    document.getElementById("time").innerHTML = a;
    function clock_tick(){
        var time = moment(a);
        time.add('second', 1);
        a = time.format("YYYY-MM-DD HH:MM:SS");
        document.getElementById("time").innerHTML = a;
        setTimeout("clock_tick()", 1000);
    }
    clock_tick();

【问题讨论】:

  • 您搜索过该网站吗?常见问题。
  • 是的,我什么也找不到

标签: php javascript date time


【解决方案1】:

这应该可以帮助您入门。你不需要使用 moment.js,但我想尝试一下,因为有人建议它。


<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script src="moment.js"></script>
<script language="javascript">
$(function() {
    $('#clock')[0].innerHTML = moment().format("<?php echo date("Y-m-d H:i:s", time()); ?>");
    clock_tick();
});
function clock_tick(){
    var clock_div = $('#clock')[0];
    var time = moment(clock_div.innerHTML);
    time.add('second', 1);
    clock_div.innerHTML = time.format("YYYY-MM-DD hh:mm:ss");
    setTimeout("clock_tick()", 1000);
}
</script>
</head>
<body>
<div id="clock"></div>
</body>
</html>

那么正如我之前所说,您可能需要设置:

date_default_timezone_set("UTC");

参考链接:
http://php.net/manual/en/function.date.php

【讨论】:

  • 我知道如何使用 php 进行设置,我只需要在客户端设置一个后台时钟,根据我的服务器而不是他们的本地时间在 UTC 中。
  • 好的,我会稍微修改一下代码,您只需在页面加载时将该变量传递给客户端代码,然后您还可以使用一些 ajax 每次回调服务器如果您想重新同步,请稍后。
  • 我遇到了一些问题,我不知道出了什么问题(请参阅问题编辑)。函数外的innerHTML 我得到2013-05-03 03:24:13 这是正确的,但是一旦我添加了间隔,我总是得到2013-05-03 03:05:00
  • 要么像我一样使用 JQuery 的 Document Ready,要么添加 onload='$('#clock')[0].innerHTML = moment().format(""); clock_tick();"' 到正文。
  • 没关系,javascript可以工作,只是加一秒后格式错误。
【解决方案2】:
moment(give ur value).format('L');

这将返回当地时间。请参阅下面的网址,它有很多格式选项,将满足您的需求。

http://momentjs.com/

【讨论】:

  • 这不是基于服务器的时间。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多