JS中如何获取服务器时间

bluemouse_2008 2010-11-01 09:21:02
问题如题
...全文
14382 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
懵懂小虎 2013-04-10
  • 打赏
  • 举报
回复
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title> New Document </title> <meta name="Generator" content="EditPlus"> <meta name="Author" content=""> <meta name="Keywords" content=""> <meta name="Description" content=""> <script type="text/javascript"> var space_num=0; var dir=1; function myScroll(){ var space_my=""; space_num=space_num+1*dir; if(space_num>100||space_num<0){ dir=dir*-1; } for(var i=0;i<space_num;i++){ space_my=space_my+" "; } var div=document.getElementById("div"); //获取时间 var getTime=new Date(); //获取年 var year=getTime.getFullYear(); //获取月 var month=getTime.getMonth()+1; //获取天 var day=getTime.getDate(); //获取小时 var hour=getTime.getHours(); if(hour<10){ hour="0"+hour; } //获取分钟 var min=getTime.getMinutes(); if(min<10){ min="0"+min; } //获取秒 var ss=getTime.getSeconds(); if(ss<10){ ss="0"+ss; } div.innerText=space_my+"世界你好!现在的时间是:"+year+"年"+month+"月"+day+"日 "+hour+"时"+min+"分"+ss+"秒"; } function startIt(){ setInterval("myScroll()",200); } </script> </head> <body onload="startIt()"> <div id="div" style="font:bold 20px '楷体'"></div> </body> </html>
yiluoAK_47 2012-02-15
  • 打赏
  • 举报
回复
好帖 。。。。。。。。。。。。。。。。。。。。。。。。。。
qq404196788 2011-12-13
  • 打赏
  • 举报
回复
在后台操作的是服务器时间,前台操作的是本机时间,那几个在js里面new date()的回去看下书吧
njkzc 2011-06-27
  • 打赏
  • 举报
回复
用ajax,action定义个方法返回服务器时间
luito 2011-06-27
  • 打赏
  • 举报
回复
围观哈~~
xxy8100 2011-06-27
  • 打赏
  • 举报
回复
js不能直接获取服务器时间,因为js再客户端运行,为了防止客户端事件不准,页面的时间一般是第一次从服务器获取个基准时间,客户端js显示时间,但是基准时间用服务器获取来的,不是直接客户端js的new date
solidco2 2011-06-27
  • 打赏
  • 举报
回复
刚看了个帖子,我上面提到的 ?rnd=12324 是为了避免缓存,你也可以按我看到的那帖子上写的 setRequestHeader("If-Modified-Since", "q"); 这个我总觉的有点……
solidco2 2011-06-27
  • 打赏
  • 举报
回复
用 XmlHttpRequest 对象的 HEAD 方法去 同步 请求服务器,然后 getResponseHeader("Date") 可以取到。

注意几点:
HEAD/POST/GET 三种方法是 ajax 的三种方法,其中 POST 和 GET,你懂得。 而 HEAD 和 GET 的区别只有HEAD是不返回内容的,只返回头部;而头部包含的Date是服务器时间。HEAD方式不下载内容,你可以保证尽快的取到结果;而请求的URL地址最好取本页面的url,最简单的 xhr.open("?rnd=1235", "HEAD", false)

另外,同步请求可以保证你可以阻塞在此行,直到服务器返回为止。启用同步请求就是上面例子里的最后一个参数:false

在open之后记得要send(null)

最后要注意的是:由于网络是有延迟的,永远不会得到准确的时间,因此你需要做一个修正值,这样设置:
请求时间:t1,请求结束时间:t2,取到的服务器时间:ts
每几分钟取一次ts,记录td = t2 - ts的值,作为服务器和本地的时间差;
由于t2和ts的时间差最小为0,因此你就每次比较新的时间差,如果比上次小,就修正为最新的,也就是始终保存最小值的时间差。这个值可能是正数也可能是负数,但是都是取最小值。
t1你使用不使用看你自己的实际情况吧,这个数学关系你只要弄明白就好了

不知道你看懂木有。我不求分,只是自己的个人经验,分享一下
rainsilence 2011-05-05
  • 打赏
  • 举报
回复
如果js要取得这样的服务器端时间,方法有很多。思路大体差不多。
1.
<script type="text/javascript">
var date = <%=date(刚才在服务器端取得的时间,内容取得方法同#14楼)%>
</script>

2.<script type="text/javascript" src=".../ScriptServlet"></script>
将Servlet的返回流中写入一个js文件,使其当中的var nowDate = 服务器端时间

3.ajax,这个就不说了,网上一大堆
rainsilence 2011-05-05
  • 打赏
  • 举报
回复
上面说的几乎全错。都是取的客户端时间
#4楼的第2个方案可能是对的。但是还是不完整。

服务器端时间这个概念很模糊。因为服务器端毕竟可能不是由一台机器组成的。最简单的情况,也分web服务器和db服务器。你说的究竟是哪一种

如果是web服务器。
那么直接在java或者.net那头new Date()就ok了
不要在网页中的<script>里面new Date,那个只是客户端时间

如果是db服务器。
需要连接到数据库,通过sql来取得。比如oracle的就是select sysdate from dual。
Palmenzweig 2011-05-05
  • 打赏
  • 举报
回复
一堆没用的答案,获取服务器的时间跟获取本机时间是不一样的你们获取的都是本机时间,没用的.....
sowuqing 2010-11-03
  • 打赏
  • 举报
回复
顶楼上,这就是答案。
jxl63589847 2010-11-03
  • 打赏
  • 举报
回复
<script type="text/JavaScript">
function showTime()
{
var now = new Date();

//获取年 月 日
var year = now.getFullYear();
var month = now.getMonth();
var date = now.getDate();

//获取时 分 秒
var hour = now.getHours();
var minute = now.getMinutes();
var second = now.getSeconds();

//12小时制
var s="AM";

if(hour>12)
{
s = "PM";
hour = hour-12;
}

//对于不足10的情况,前补0
if(hour<10)
hour = "0"+hour;

if(minute<10)
minute = "0"+minute;

if(second<10)
second = "0"+second;

var str = year+"年"+(month+1)+"月"+date+"日 "+hour+":"+minute+":"+second+" "+s;
//打印输出
//document.write("<h1>"+hour+":"+minute+":"+second+"</h1>");

//将显示信息赋给文本框的value属性
//document.all.txtTime.value = str;

//给层的内容赋值
document.getElementById("timeDiv").innerHTML = str;

//使用延时器来循环调用(setTimeout)
//必须要放在函数体内部
//setTimeout("函数名称();",延迟的毫秒数)
//可以定义延时器变量来接收
timer = window.setTimeout("showTime();",1000);

}
//-->
</script>
<body>
<div id="timeDiv" style="height:1; display: inline ;font-size:11pt; color:#0D70AB;filter:glow(color=#1070a3,strength=1)">显示时间的地方</div>
</body>
tmhk123 2010-11-03
  • 打赏
  • 举报
回复
给你个时间不断刷新的代码
<script type="text/javascript">

function runClock(){
var today = new Date();
var display= today.toLocaleString();
document.getElementById("div_date").innerHTML=today;
}
setInterval("runClock()",1000);


</script>
<body>
<span id="div_date"></span>
</body>
pillarmorgan 2010-11-03
  • 打赏
  • 举报
回复
<script language="javascript">
var a = new Date()
a = <%=System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")%>;
Response.Write(a)
</script>

joyce_wung 2010-11-03
  • 打赏
  • 举报
回复
new Date() 即可.

alert之.... 会发现得到了...
SSH_J2EE 2010-11-01
  • 打赏
  • 举报
回复
new Date()可以精确到毫秒,我希望你把分给我,因为我快穷飞了·没分
SSH_J2EE 2010-11-01
  • 打赏
  • 举报
回复
服务器的时间就是new Date();你也可以带参数,你可以看看JS的书,上面有讲Date这个对象
noble宏冰 2010-11-01
  • 打赏
  • 举报
回复
如果是想动态取刚用ajax技术去实,每隔一秒进行调用后来幽数进行取时间值.
cfd406635982 2010-11-01
  • 打赏
  • 举报
回复
网上现找的:

<script language="javascript">
var a = new Date()
a = <%=System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")%>;
Response.Write(a)
</script>
详细出处参考:http://www.jb51.net/article/21763.htm



2.


<script runat="server" language="javascript">
var a = new Date();
a =a.getFullYear()+ "-"+(a.getMonth()+1)+"-"+a.getDate()+" "+a.getHours()+":"+a.getMinutes();
Response.Write(a);
</script>
详细出处参考:http://www.jb51.net/article/21763.htm


加载更多回复(3)

81,095

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧