| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1468 人关注过本帖
标题:[求助]客户端 如何动态显示服务器的时间。含秒。
只看楼主 加入收藏
boyjjq2007
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2007-3-15
收藏
得分:0 
回复:(atian)[求助]客户端 如何动态显示服务器的时...

yms123说的不错“目前只有Ajax能做到不刷新现实服务器时间,但是这样做的弊端是大量消耗服务器的资源。因为Ajax只是浏览器界面不刷新,而后台还是会在不停的刷新服务器页面,只不过这个过程用户看不到而已。”

我有可行的方案:
vb.net获得服务器时间:
System.DateTime.Now().ToString()

vb.net定义JS变量到前台(以小时为例):
Strhour为从System.DateTime.Now().ToString()取得的小时...
Controls.Add(New LiteralControl("<script language=javascript>var ServerHour = "Strhour" ; var ServerMin = "StrMin" ;var ServerSec = "Strsec" ;</script>"))

在前台.aspx
<SCRIPT language=javascript>
<!--
var sec=Strsec;
var min=Strmin;
var hou=Strhou;
idt=window.setTimeout("update();",1000);
function update(){
sec++;
if(sec==60){
sec=0;min+=1;
}
if(min==60){
min=0;hou+=1;
}
if(hou==24){
hou=0; }
}
document.forms.Servertime.text=hou+"时"+min+"分"+sec+"秒";
idt=window.setTimeout("update();",1000);
}
//-->
</SCRIPT>

这样只要从服务器获得一次时间,在页面上的时间刷新与房屋器无关,上面已经给出了清晰的思路,有疑问可以找我:夜风~~(QQ:58328422)本论坛帐号不再使用。

2007-03-15 16:30
yms123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:209
帖 子:12488
专家分:19042
注 册:2004-7-17
收藏
得分:0 
个人也想到了一个思路就是得到服务器时间然后用setTimeout对时间加1即可与服务器同步,又不占用服务器资源。
2007-03-15 16:37
yms123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:209
帖 子:12488
专家分:19042
注 册:2004-7-17
收藏
得分:0 

我想到的代码
<html>
<head>
<script language="javascript">
var CDate=new Date();
CDate.setFormatDate("<%=Now()%>");//获取服务器时间
function Page_Load()
{
window.setTimeout(10000);//每隔一秒执行一次
CDate.setSeconds(CDate.getSeconds()+1);//时间对象秒数加1
document.write("当前服务器时间"+CDate.getTime());//显示服务器时间
}
</script>
</head>
<body onLoad="Page_Load();">
</body>
</html>
原理就是获得服务器时间后在客户端,对服务器时间每隔一秒加1即就是同步了服务器时间。而向服务器要时间则只加载一次。

2007-03-15 16:54
rainic
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:2367
专家分:0
注 册:2005-8-9
收藏
得分:0 
回10楼:

我的想法和你在13楼做的一样

2007-03-15 22:59
阳光白雪
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:39
帖 子:2220
专家分:0
注 册:2005-11-18
收藏
得分:0 
以下是引用yms123在2007-3-15 16:54:16的发言:

我想到的代码
<html>
<head>
<script language="javascript">
var CDate=new Date();
CDate.setFormatDate("<%=Now()%>");//获取服务器时间
function Page_Load()
{
window.setTimeout(10000);//每隔一秒执行一次
CDate.setSeconds(CDate.getSeconds()+1);//时间对象秒数加1
document.write("当前服务器时间"+CDate.getTime());//显示服务器时间
}
</script>
</head>
<body onLoad="Page_Load();">
</body>
</html>
原理就是获得服务器时间后在客户端,对服务器时间每隔一秒加1即就是同步了服务器时间。而向服务器要时间则只加载一次。

这样也会存在一个弊端,如果页面加载时间太长的话就会产生一定的误差,


专注于WEB前端交互平台开发:[url=http://blog./]blog.[/url](富客户端技术(RIA)交流平台)
2007-03-16 08:17
在编程中沦落
Rank: 2
等 级:新手上路
威 望:4
帖 子:411
专家分:0
注 册:2005-12-25
收藏
得分:0 
刚刚想到13楼的方法,看到15楼,哎…………

佩服啊…………

2007-03-16 10:27
yms123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:209
帖 子:12488
专家分:19042
注 册:2004-7-17
收藏
得分:0 

[CODE]<html>
<head>
<title>服务器时间同步</title>
<script language="vbscript">
Dim SDate
SDate=CDate("<%=Replace(Now(),"-","/")%>")'获取服务器时间
Function Page_Load()
window.setTimeout "Page_Load()",1000'每隔一秒执行一次
SDate=DateAdd("s",1,SDate)
ShowTime.innerHTML="当前服务器时间"&CStr(SDate)'显示服务器时间
End Function
</script>
</head>
<body onload="Page_Load()">
<div id="ShowTime" ></div>
<div id="Div1" ></div>
</body>
</html>
[/CODE]
VBSCript版
[CODE]<html>
<head>
<title>服务器时间同步</title>
<script language="javascript">
var SDate=new Date("<%=Replace(Now(),"-","/")%>")//获取服务器时间
function Page_Load()
{
window.setTimeout("Page_Load()",1000);//每隔一秒执行一次
SDate.setSeconds(SDate.getSeconds()+1);//秒数加1
this.ShowTime.innerHTML="当前服务器时间"+SDate//显示服务器时间
}
</script>
</head>
<body onload="Page_Load();">
<div id="ShowTime" ></div>
</body>
</html>[/CODE]
JavaScript版
在本地测试这个想法没有问题,服务器上不知道,不过网络延时的确有可能造成误差。

2007-03-16 10:39
快速回复:[求助]客户端 如何动态显示服务器的时间。含秒。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.053487 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved