2013-05-03 91 views
1

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

<?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(); 
+0

您是否在该网站上搜索?常见问题。 – epascarello 2013-05-03 02:01:00

+0

是的,我找不到任何东西 – 2013-05-03 02:01:18

回答

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

+0

我知道如何使用PHP来设置它,我只需要一个客户端背景时钟,根据我的服务器而不是他们的当地时间在UTC。 – 2013-05-03 02:05:31

+0

好的,我会稍微改变一下代码,你只需要在页面加载时将该变量传递给客户端代码,然后如果你想重新同步,你也可以每隔一段时间使用一些ajax回调服务器它。 – dkroy 2013-05-03 02:08:34

+0

我有一些问题,我不知道什么是错的(请参阅问题编辑)。函数外部的innerHTML我得到'2013-05-03 03:24:13'这是正确的,但是一旦我添加了间隔,我就一直得到'2013-05-03 03:05:00'。 – 2013-05-03 03:25:01

0
moment(give ur value).format('L'); 

即会返回本地时间。看到下面的网址,它有很多的格式选项,将符合您的需求。

http://momentjs.com/

+0

这不是基于服务器的时间。 – 2013-05-03 02:21:29

相关问题