js如何取得服务器时间

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js如何取得服务器时间相关的知识,希望对你有一定的参考价值。

如下代码是时刻显示和更新当前时间(hh:mm:ss),但是放到服务器上运行,再从另一台机子去访问该网页时,实际显示的时间并不是服务器上的时间,而是当前机子的时间。
各位大虾帮帮忙,访问机子如何才能时刻显示并更新服务器的当前时间(hh:mm:ss)。

<html>
<HEAD>

<script language=javascript>
function time()
//获得显示时间的div
t_div = document.getElementById('showtime');
var now=new Date();

//替换div内容
t_div.innerHTML = ( now.getHours()<10?("0"+now.getHours()):now.getHours() ) + ":"
+ ( now.getMinutes()<10?("0"+now.getMinutes()):now.getMinutes() ) + ":"
+ ( now.getSeconds()<10?("0"+now.getSeconds()):now.getSeconds() ) ;
//等待一秒钟后调用time方法,由于settimeout在time方法内,所以可以无限调用
setTimeout(time,1000);

</script>

</HEAD>

<BODY TOPMARGIN=16 onload="time()">

<div id="showtime"></div>

<script language="javascript">
function change()

var obj=document.getElementsByName("yjsj").value;
this.focus();
document.getElementById("div1").innerHTML=obj

</script>

</BODY>

</HTML>

正如楼上所说的,js只能操作客户端的东西。在客户端时刻显示并更新服务器的时间应该是不可能的,因为会由于网络延迟的因素使得时间不精确。
打个比方,可以使用ajax每秒钟获取服务器的时间,然后再显示出来,但是可能这个用户的网络延迟比较厉害,他请求的这个时间过了两三秒才返回给客户端,那这样更新时间就不精确了。

也可以这样,第一次从服务器那里获取时间,然后再客户端用js,每秒累加数,就是以获取服务器的那个时间为起掉,用客户端代码每秒累加这个时间追问

后面这个方法不错,可行。
具体应该如何的简易地实现呢?
总不会自己建一个时钟运行的类和方法吧?

追答

var initTime = ...;
function clock()
累加initTime

setInterval(clock,1000);//这方法名有点记不得了,自己查下API

参考技术A

如果是网页前端的js是无法直接获得服务器时间的。只能借助一些服务器端语言,比如php,JSP,ASP等。方法是在服务器端获取服务器时间,然后输出一条js的幅值语句。

<script>
var serverTime=<%=Now()%>
alert(serverTime)
<script>

参考技术B js是客户端脚本,无法获取服务器时间。只能获取客户端时间。追问

那么不用js,用jsp如何实现“时刻显示并更新”时间呢?

追答

jsp我不知道,我学的php。

参考技术C 取一次服务器时间,然后更新,因为网络的问题,肯定有一定的时差

js 取得当天0点 / 23:59:59 时间

js 取得今天0点:

const start = new Date(new Date(new Date().toLocaleDateString()).getTime());
console.log(start); //Mon Dec 04 2017 00:00:00 GMT+0800 (中国标准时间)

同理算出:

js 取得今天 23:59:59

const start = new Date(new Date(new Date().toLocaleDateString()).getTime()+24*60*60*1000-1);
console.log(start); //Mon Dec 04 2017 23:59:59 GMT+0800 (中国标准时间)

其他也是同理类推

 

参考资料 :https://www.cnblogs.com/xiangsj/p/7977325.html

以上是关于js如何取得服务器时间的主要内容,如果未能解决你的问题,请参考以下文章

java new Date取得是以啥时间为准

freemarker 取得文本框内容赋值给一个变量, 怎么实现?

Node.js 使用jQuery取得Nodejs http服务端返回的JSON文字示例

Node.js 使用jQuery取得Nodejs http服务端返回的JSON数组示例

Node.js 使用angularjs取得Nodejs http服务端返回的JSON数组示例

在JavaScript中怎么取得DataTable中的数据