内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用
在javascript和php上有一个带有“walkin”时钟的脚本(我需要服务器端时间 - 这很重要),但它会停止并且在刷新页面之前不要计算。我做错了什么,请帮忙。谢谢。
<?php $Hour = date("H");
$Minute = date("i");
$Second = date("s");
$Day = date("d");
$Month = date("m"); ?>
<script type="text/javascript">
function clock() {
var d = new Date();
var month_num = d.getMonth();
var day = d.getDate();
var hours = <?php echo $Hour;?>;
var minutes = <?php echo $Minute;?>;
var seconds = <?php echo $Second?>;
month=new Array("января", "февраля", "марта", "апреля", "мая", "июня", "июля", "августа", "сентября", "октября", "ноября", "декабря");
if (day <= 9) day = "0" + day;
if (hours <= 9) hours = "0" + hours;
if (minutes <= 9) minutes = "0" + minutes;
if (seconds <= 9) seconds = "0" + seconds;
date_time = "Today - " + day + " " + month[month_num] + " " + d.getFullYear() + " y. Now - "+ hours + ":" + minutes + ":" + seconds;
if (document.layers) {
document.layers.doc_time.document.write(date_time);
document.layers.doc_time.document.close();
} else document.getElementById("doc_time").innerHTML = date_time;
setTimeout("clock()", 1000);}
</script>
<span id="doc_time">Date & time</span>
<script type="text/javascript">clock();</script>
你的问题:
相反,你应该:
var D = new Date("<?php echo date('D M d Y H:i:s O');?>");
函数外部。
function zero(n) {return n>9?n:"0"+n;}
var months = ["января", "февраля", "марта", "апреля", "мая", "июня", "июля", "августа", "сентября", "октября", "ноября", "декабря"];
// I'll use this for demo:
var D = new Date("Sun Sep 09 2018 23:04:36 +0000");
// you, use this instead:
// var date = new Date("<?php echo date('D M d Y H:i:s O');?>");
function clock() {
var y = D.getFullYear();
var M = D.getMonth();
var d = D.getDate();
var h = D.getHours()
var m = D.getMinutes();
var s = D.getSeconds();
d = zero(d);
h = zero(h);
m = zero(m);
s = zero(s);
var date_time = "Дата: " + d + " " + months[M] + " " + y + ".   Время: " + h + ":" + m + ":" + s;
document.getElementById("doc_time").innerHTML = date_time;
D.setSeconds(D.getSeconds() + 1); // Increment by one second
setTimeout(clock, 1000);
}
clock();
<div id="doc_time"></div>
谢谢你们。我在这些行中的代码中发现了一个错误......
<script>
function clock() {
var d = new Date();
var month_num = d.getMonth();
var day = <?php echo date("d");?>;
var hours = <?php echo date("H");?>;
var minutes = <?php echo date("i");?>;
var seconds = d.getSeconds();
</script>