Javascript时钟与设备不同

Javascript时钟与设备不同,javascript,sync,clock,Javascript,Sync,Clock,我目前正在学习一些Javascript,我制作了一个实时时钟(实际上我修改了W3school的代码,但不管怎样……我已经学会了如何用PHP制作时钟,所以重复这一点毫无意义……) 但实时时钟似乎无法与不同的设备同步,我想知道原因 W3将日期对象解释为1970年以来的毫秒计数,所以我不明白为什么它会出错……在我看来,它并没有这样做,而是在镜像计算机的时钟 当我在智能手机上打开网站时,时钟是30秒左右 有没有办法让时钟反映服务器的时间而不是每个用户的计算机 这是密码 var ampm = "AM";

我目前正在学习一些Javascript,我制作了一个实时时钟(实际上我修改了W3school的代码,但不管怎样……我已经学会了如何用PHP制作时钟,所以重复这一点毫无意义……)

但实时时钟似乎无法与不同的设备同步,我想知道原因

W3将日期对象解释为1970年以来的毫秒计数,所以我不明白为什么它会出错……在我看来,它并没有这样做,而是在镜像计算机的时钟

当我在智能手机上打开网站时,时钟是30秒左右

有没有办法让时钟反映服务器的时间而不是每个用户的计算机

这是密码

var ampm = "AM"; //Default
var message="";
function startTime()
{
var today=new Date();
var h=today.getHours();
var m=today.getMinutes();
var s=today.getSeconds();
// add a zero in front of numbers<10
m=checkTime(m);
s=checkTime(s);
h=checkTime2(h);
document.getElementById('clocktxt').innerHTML=h+":"+m+":"+s+ " " +ampm + " " + message;
t=setTimeout('startTime()',500);
}

function checkTime(i)
{
if (i<10)
  {
  i="0" + i;
message = "How long you gonna sit there?";
  }
return i;
}

function checkTime2(i)
{
if (i>12)
  {
  i=i-12;
ampm="PM";
  }
return i;
}

window.onload=startTime;
var ampm=“AM”//违约
var message=“”;
函数startTime()
{
var today=新日期();
var h=today.getHours();
var m=today.getMinutes();
var s=today.getSeconds();
//在数字前面加一个零你的代码是在“客户端”设备上执行的——不管是你的智能手机还是PC。
因此,您在此设备上设置了时间。此“日期”对象实际上不知道服务器上的任何时间。时间由安装在客户端计算机上的基础操作系统确定

您的问题实际上与某些特定技术(例如Java脚本)无关,而是如何在服务器和客户机上实现时间同步。 其实很复杂

您可以更进一步,询问如何在属于不同时区的设备之间同步时间。考虑“夏令时”时间段的不同计算如何

作为计算机之间时间同步的常见答案,您可以阅读有关网络时间协议的内容,

您的代码在“客户端”设备上执行—您的智能手机、PC等。 因此,您在此设备上设置了时间。此“日期”对象实际上不知道服务器上的任何时间。时间由安装在客户端计算机上的基础操作系统确定

您的问题实际上与某些特定技术(例如Java脚本)无关,而是如何在服务器和客户机上实现时间同步。 其实很复杂

您可以更进一步,询问如何在属于不同时区的设备之间同步时间。考虑“夏令时”时间段的不同计算如何


作为计算机之间时间同步的常见答案,您可以阅读有关网络时间协议的内容,

以下代码将给出1970年起的秒数。[Unix时间戳/历元时间]

Math.round( new Date().getTime() / 1000 ) 

下面的代码将给出从1970年开始的秒数。[Unix时间戳/历元时间]

Math.round( new Date().getTime() / 1000 ) 

如果启用了PHP,则可以执行以下操作:

var serverTimeString = '<?php print date("F d, Y H:i:s", time())?>';
var today = new Date(serverTimeString);
var serverTimeString='';
var today=新日期(serverTimeString);

如果启用了PHP,则可以执行以下操作:

var serverTimeString = '<?php print date("F d, Y H:i:s", time())?>';
var today = new Date(serverTimeString);
var serverTimeString='';
var today=新日期(serverTimeString);

好吧,我就是这样做的:(一点也不变化)


钟
函数showTime(){
变量日期=新日期();
var h=date.getHours();//0-23
var m=date.getMinutes();//0-59
var s=date.getSeconds();//0-59
var session=“PM”;
如果(h==02){
h=12;
}
如果(h>12){
session=“PM”;
}
h=(h<10)-“0”+h:h;
m=(m<10)-“0”+m:m;
s=(s<10)?“0”+s:s;
var time=h+“:“+m+”:“+s+”+会话;
document.getElementById(“MyClockDisplay”).innerText=时间;
document.getElementById(“MyClockDisplay”).textContent=时间;
设置超时(显示时间,1000);
}
showTime();
身体{
背景:url('imagename.jpg');
颜色:白色;
}
.钟{
位置:绝对位置;
最高:50%;
左:50%;
转化:translateX(-50%)translateY(-50%);
颜色:#e6967e;
字体大小:60px;
字体系列:“Josefin Sans”,无衬线;
字母间距:7px;
-webkit转换:0.5s;
}
.时钟:悬停{
转换:translateY(-10px);
过渡:0.5s;
字号:80px;
颜色:白烟;
}

虽然在不同的国家它会有所不同,但会自动设置好,我就是这样做的:(一点也没有变化)


钟
函数showTime(){
变量日期=新日期();
var h=date.getHours();//0-23
var m=date.getMinutes();//0-59
var s=date.getSeconds();//0-59
var session=“PM”;
如果(h==02){
h=12;
}
如果(h>12){
session=“PM”;
}
h=(h<10)-“0”+h:h;
m=(m<10)-“0”+m:m;
s=(s<10)?“0”+s:s;
var time=h+“:“+m+”:“+s+”+会话;
document.getElementById(“MyClockDisplay”).innerText=时间;
document.getElementById(“MyClockDisplay”).textContent=时间;
设置超时(显示时间,1000);
}
showTime();
身体{
背景:url('imagename.jpg');
颜色:白色;
}
.钟{
位置:绝对位置;
最高:50%;
左:50%;
转化:translateX(-50%)translateY(-50%);
颜色:#e6967e;
字体大小:60px;
字体系列:“Josefin Sans”,无衬线;
字母间距:7px;
-webkit转换:0.5s;
}
.时钟:悬停{
转换:translateY(-10px);
过渡:0.5s;
字号:80px;
颜色:白烟;
}

虽然在不同的国家会有所不同,但会自动设置

嗨,谢谢你的回答和链接…我不认为制作一个时钟会这么困难:p哦,我也不必担心不同的时区,我知道这个网站只会在一种状态下使用…也许有一种方法可以在PHP服务器时间启动时钟?是的,当然正在向PHP服务器发送AJAX请求以获取服务器时间。您好,谢谢您的回答和链接…我没有