Javascript 时区PHP刷新

Javascript 时区PHP刷新,javascript,php,time,Javascript,Php,Time,我需要每秒钟刷新我的时区 我有以下代码: $now = new DateTime(null, new DateTimeZone('America/New_York')); $now->setTimezone(new DateTimeZone('Europe/London')); echo $now->format("H:i:s A"); 我想在我的服务器上按时区(状态)显示时间,并进行刷新 与此代码类似,但与我的时区状态类似,如欧洲/伦敦或其他州: <script type=

我需要每秒钟刷新我的时区

我有以下代码:

$now = new DateTime(null, new DateTimeZone('America/New_York'));
$now->setTimezone(new DateTimeZone('Europe/London')); echo
$now->format("H:i:s A");
我想在我的服务器上按时区(状态)显示时间,并进行刷新

与此代码类似,但与我的时区状态类似,如欧洲/伦敦或其他州:

<script type="text/javascript"> 
function display_c(){
    var refresh=1000; // Refresh rate in milli seconds
    mytime=setTimeout('display_ct()',refresh)
}

function display_ct() {
    var strcount
    var x = new Date()
    document.getElementById('ct').innerHTML = x;
    tt=display_c();
}
</script>


<body onload=display_ct();>
<span id='ct' ></span>
真正的php代码是

<?Php

$date = new DateTime($ref['lastupdated']);
$date->setTimezone(new DateTimeZone('America/Los_Angeles'));
echo $date->format('m/d/y g:i:s a');
?>

用php更新源代码

<?php
echo "<div id=\"output\"></div>";
echo "<script type='text/javascript'>
( function()
{ 
// use JavaScript Date to display current date
// in a div (#displayJsDate)
var output = document.getElementById('output');


var start = moment("<? print date("c")?>");
var delta = start - moment();

setInterval(function(){
    var now = moment().add(delta,'ms');
    var m = now.tz('$data[zone]');    // Set the time zone as desired
    var s = m.format('YYYY-MM-DD h:mm:ss A');
    output.innerHTML = s;
}, 1000);
})();
</script>";



?>

您可以使用setTimeout()创建递归javascript函数来持续更新当前时间。请参见

这与PHP无关。您需要一个能够理解时区的JavaScript库

例如,使用,可以执行以下操作:

var output=document.getElementById(“输出”);
var开始=力矩(“2015-01-01T00:00:00Z”);//来自服务器的当前时间UTC值
var delta=开始力矩();
setInterval(函数(){
var now=moment().add(delta,'ms');
var m=now.tz(“美国/纽约”);//根据需要设置时区
var s=m.format(“YYYY-MM-ddh:MM:ss A”);
output.innerHTML=s;
}, 1000);


您需要一个js库,例如。你也可以用它。我不确定这与PHP有什么关系。我有一个有时区的网站,所以我为所有州和国家编写了一个代码来放置它们,只需更改时区名称,所以我为java脚本编写了一个代码,比如DateTimeZone('欧洲/伦敦是的,你可以用moment timezone或任何库来做。我知道这一点,但我如何更新当前的时间(在服务器上实时)PHP根据PHP.ini文件中设置的时区获取时间。如果没有设置时区,它将从服务器的硬件时间中提取。您是否试图通过PHP设置硬件时钟?您是否试图在网站上更新时间?要了解您的问题,您需要详细说明为什么需要服务器不断更新times.thx u Matt Johnson,但momentjs中的时间不是真实的,因为时间显示在计算机时钟上,而不是服务器时间:(那么,您需要完善您的需求。您真的希望客户端每秒向服务器呼叫一次以获取时间吗?还是希望根据服务器端的时间在客户端初始化事件?如果是,您计划如何处理DST转换?或者这与您的情况无关?thx Matt Johnson for reply,看,我有一个关于时区的网站,所以我从服务器上看到设置时区没问题,因为时间服务器每秒更新一次时间,DST转换也会更新,对不起,如果你不懂,因为我的英语不太好:)我已经更新了答案,显示了如何从另一个源初始化时间创建初始时间值。请澄清-您不应该使用PHP为此特定目的进行时区转换。如果您这样做,时钟将不会在跨越DST转换时正确地滴答作响,直到用户刷新页面。上述代码确实会正确处理DST转换。
<?php
echo "<div id=\"output\"></div>";
echo "<script type='text/javascript'>
( function()
{ 
// use JavaScript Date to display current date
// in a div (#displayJsDate)
var output = document.getElementById('output');


var start = moment("<? print date("c")?>");
var delta = start - moment();

setInterval(function(){
    var now = moment().add(delta,'ms');
    var m = now.tz('$data[zone]');    // Set the time zone as desired
    var s = m.format('YYYY-MM-DD h:mm:ss A');
    output.innerHTML = s;
}, 1000);
})();
</script>";



?>