动态获取服务器时间

最近在做的这个项目要获取到后台的数据,然后使用html5绘制曲线,以前都是在自己电脑上使用没有发现有什么不正常的地方,昨天连接同事的服务器发现有段数据怎么都对不上了,开始我还以为程序有问题呢,找了半天结构发现是我的电脑时间和同事的电脑时间对不上导致的。既然发现了问题下面就是找出解决办法了。

实际上最好的解决办法是固定客户端的时间,不然修改,但你会发现这个不可能的。所以只有找其他方式的。再有就是获取服务器时间然后同步到客户端了。实际上这个游戏三种方式可行。

1、既然是动态获取就每秒获取一次,这样能完成需求但是会很大的增加服务器的压力。

2、获取玩一次后,然后在客户端进行更新,这个能保证在开始的时候获取到的数据时正确的,但是后期不能保证数据的正确性。

3、在开始的时候获取一次,以后每过分钟再获取一次,这样能很大程度上减少服务器的压力,也能很大程度上保证数据的正确性。

获取服务器时间:

/**
 * 获取服务器时间
 */
function getServerTime()
{
<span style="white-space:pre">	</span>nowTime = new Date().getTime();
<span style="white-space:pre">	</span>$.ajax(
<span style="white-space:pre">	</span>{
<span style="white-space:pre">		</span>url : 'serverTime_getServerTime', type : 'GET', datatype : 'json',
<span style="white-space:pre">		</span>success : function(data)
<span style="white-space:pre">		</span>{
<span style="white-space:pre">			</span>/**
<span style="white-space:pre">			</span> * 判断对应的键值是否有对应的数据
<span style="white-space:pre">			</span> */
<span style="white-space:pre">			</span>if (data)
<span style="white-space:pre">			</span>{
<span style="white-space:pre">				</span>nowTime = data;
<span style="white-space:pre">			</span>}
<span style="white-space:pre">		</span>}
<span style="white-space:pre">	</span>});
<span style="white-space:pre">	</span>return nowTime;
}

设置动态更新:

function setTime()
{
	if (timeInterval != 60000)
	{
		timeInterval += 1000;
		nowTime += 1000;
	} else
	{
		nowTime = getServerTime();
		timeInterval = 0;
	}
	$("#server_time").html(
			"服务器时间:" + new Date(nowTime).toString().substring(15, 24));
}

在页面加载的时候调用:

<span style="font-family: Arial, Helvetica, sans-serif;">window.onload = function()</span>
{
	nowTime = getServerTime();
	setInterval(setTime, 1000);
};

这样就能实现时间的动态刷新,但又不至于频繁的到后台请求数据了。

时间: 2024-10-19 18:48:36

动态获取服务器时间的相关文章

Unity 获取服务器时间 HTTP请求方式

在写每日签到的时候,我居然使用的是本地时间...被项目经理笑哭了...., 如果你在写单机游戏,没有游戏服务器,但又不想使用本地时间,就可以采用下面方法. 方法总结: 1. 使用HTTP请求获取服务器时间,不能实时获取服务器时间这样高频率的 2. 使用socket可以实时获取服务器时间 3. 使用C#自带API获取sql server 标准北京时间(=.=还没有找到这个API) 第HTTP方式: 代码: using UnityEngine; using System.Collections; u

通过AFNetworking获取服务器时间

在一些场合,我们需要获取服务器的时间,计算该时间与客户端本地时间的差值,以利于时间同步.有人说,这个不是很简单吗,让后台的TX给你一个获取服务器时间的接口就行了. 其实这个还是比较麻烦的,更简单的是利用HTTP Header来获取服务器时间--每个HTTP header的Date参数就是这个时间.在iOS中我们通常用AFNetworking发请求,那么用AFNetworking怎么得到HTTP header信息呢? 很简单,用 [[operation response] allHeaderFie

Ubuntu利用TCP协议来获取服务器时间

Linux利用TCP协议来获取服务器时间 这里使用Unix网络编程里面的一个小程序,该客户端建立一个到服务器的TCP连接,然后读取由服务器以直观可读格式简单地送回的当前时间和日期. #include "unp.h" int main(int argc, char **argv) { int sockfd, n; char recvline[MAXLINE + 1]; struct sockaddr_in servaddr; if (argc != 2) err_quit("u

jsp页面获取服务器时间

Calendar c = Calendar.getInstance(); int year = c.get(Calendar.YEAR); int month = c.get(Calendar.MONTH); int day= c.get(Calendar.DAY);   这三行加在<%   %>里面 调用时用<%= year  %><%= month%><%= day%> jsp页面获取服务器时间

小案例 - 获取服务器时间

1. GetTime.html 1 <!DOCTYPE html> 2 <html xmlns="http://www.w3.org/1999/xhtml"> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 5 <title></title> 6 <scri

09 获取服务器时间

获取服务器时间:var now = new Date($.ajax({async: false}).getResponseHeader("Date")); 2.new Date()用法:获取年:var currentYear = now.getFullYear();获取月:var currentMonth = now.getMonth();获取日:var currentDay = now.getDate();获取小时:var currentHours = now.getHours();

动态获取server时间

近期在做的这个项目要获取到后台的数据.然后使用html5绘制曲线.曾经都是在自己电脑上使用没有发现有什么不正常的地方,昨天连接同事的server发现有段数据怎么都对不上了,開始我还以为程序有问题呢,找了半天结构发现是我的电脑时间和同事的电脑时间对不上导致的.既然发现了问题以下就是找出解决的方法了. 实际上最好的解决的方法是固定client的时间,不然改动,但你会发现这个不可能的.所以仅仅有找其它方式的. 再有就是获取server时间然后同步到client了.实际上这个游戏三种方式可行. 1.既然

Titanium系列--利用js动态获取当前时间

动态获取时间: //显示时间 function getDateTime() { var now = new Date(); var year = now.getFullYear(); var month = now.getMonth()+1; var day = now.getDate(); //var hour = now.getHours(); //var minute = now.getMinutes(); //var second = now.getSeconds(); if(month

Javascript获取服务器时间

Javascript是运行在客户端的脚本,我们一般都用new Date()来获取当前时间,但是得到的是客户端的时间,客户端时间是随意更改的,如果要做一个产品发布倒计时的话,客户端时间一改,就要闹笑话了.业务中需要用到服务器时间的场景还有很多,那么仅仅通过js怎么拿到服务器时间呢?事实上,只需要一个ajax请求就搞定,通过读取XMLHttpRequest对象的请求头里面的时间戳得到当前服务器时间! 原理就是这么简单:通过ajax向服务器发送请求,当服务器收到请求后即可读取请求头的时间戳了,不管请求