(1)情景分析:
项目系统中会经常会遇到修改数据,修改数据有一种需求:只能修改一定时间段内的数据。这种情况需要获得服务器的当前时间。那么问题来了,怎么获得服务器的时间呢?
(2)方法归纳:
1.java代码后端new Date()可以得到服务时间(这种情况不是适合客户端获取)
2.一般用js代码获取服务器时间
(1)
获取服务器返回的头部信息中的Date属性
由于得到的是GMT(格林尼治时间)
所以要转换成东八区的时间
这个就是响应服务器的当前时间。
var date = new Date($.ajax({async: false}).getResponseHeader("Date"));
var bom= date + (3600000 * 8);
var time = new Date(bom);
好看的写法:
function getCurDate(){
var date="";
var url='..........';
$.ajax({
type:'post',
url:url,
async:false,(同步)
dataType: 'json',
complete: function( xhr,data ){
date= xhr.getResponseHeader('Date');//String类型
}
});
return date;
}
(2)
在 HTTP 头里带一个Date的头部信息,用Ajax直接取头部信息里的Date就可获取服务器时间
js写法
var xhr = new XMLHttpRequest();
if( !xhr ){
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
xhr.open("HEAD",url,true);
xhr.onreadystatechange=function(){
if( xhr.readyState == 4 && xhr.status == 200 ){
alert(xhr.getResponseHeader("Date"));
}
}
xhr.send(null);
(3)
<script language="javascript">
var a = new Date()
a = <%=System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")%>;
Response.Write(a)
</script>
(4)
<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>