php获得服务器时间,用到的工具:notepad++,步骤如下:
代码如下:
<?php//以中国为时区为示例
date_default_timezone_set("PRC")
echo date("Y年-m月-d日 H:i:s")
?>
说明:输出的时间格式为xxxx-xx-xx xx:xx:xx即2017-03-21 20:45:59
2.将代码放到一个php文件中,以home.php为示例,放到网站目录下边,运行以后的效果:
注意事项:此代码必须在php环境下运行。
网页前端是无法获取到服务器时间的,只有通过后台取值然后进行传递。 使用Ajax每秒获取服务器的时间并显示出来,但是服务器网络延迟较高,这样误差较大。
示例采用Head的方法处理,第一次页面加载时从服务器端获得时间,以这个时间为基准,客户端再用js每秒累加。
完整代理示例:
<html><head>
<title>html网页获取服务器的时间</title>
<script language="JavaScript" type="text/javascript">
<!--程序执行需要耗费时间,误差在2秒以下-->
var xmlHttp = false
<!--获取服务器时间-->
try {
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP")
} catch (e) {
try {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP")
} catch (e2) {
xmlHttp = false
}
}
if (!xmlHttp && typeof XMLHttpRequest != 'undefined') {
xmlHttp = new XMLHttpRequest()
}
xmlHttp.open("GET", "
, false)
xmlHttp.setRequestHeader("Range", "bytes=-1")
xmlHttp.send(null)
severtime=new Date(xmlHttp.getResponseHeader("Date"))
<!--获取服务器日期-->
var year=severtime.getFullYear()
var month=severtime.getMonth()+1
var date=severtime.getDate()
<!--获取服务器时间-->
var hour=severtime.getHours()
var minu=severtime.getMinutes()
var seco=severtime.getSeconds()
<!--格式化输出服务器时间-->
function getSeverTime(){
seco++
if(seco==60){
minu+=1
seco=0
}
if(minu==60){
hour+=1
minu=0
}
if(hour==24){
date+=1
hour=0
}
<!--日期处理-->
if(month==1||month==3||month==5||month==7
||month==8||month==10||month==12)
{
if(date==32)
{
date=1
month+=1
}
}else if(month==4||month==6||month==9||month==11){
if(date==31){
date=1
month+=1
}
}else if(month==2){
if(year%4==0&&year%100!=0){<!--闰年处理-->
if(date==29){
date=1
month+=1
}
}else{
if(date==28){
date=1
month+=1
}
}
}
if(month==13){
year+=1
month=1
}
sseco=addZero(seco)
sminu=addZero(minu)
shour=addZero(hour)
sdate=addZero(date)
smonth=addZero(month)
syear=year
innerdata="当前服务器时间:"
document.getElementById("servertime").innerHTML=innerdata+syear+"-"+smonth+"-"+sdate+" "+shour+":"+sminu+":"+sseco
setTimeout("getSeverTime()",1000)
setTimeout("getClientTime()",100)
}
function addZero(num) {
num=Math.floor(num)
return ((num <= 9) ? ("0" + num) : num)
}
</script>
</head>
<body onLoad="getSeverTime()">
<p id="servertime"></p>
<p id="clienttime"></p>
<p id="xctime"></p>
</body>
</html>
【扩展】网页前端获取当前时间,调用date()函数即可。
示例代码:
<span id="cg"></span><script>setInterval("cg.innerHTML=new Date().toLocaleString()",1000)</script>
// 思路是发送一个http请求,然后从response字符串里截取出Date部分,这样得到的时间是GMT格式的,不过转本地时间也很容易了#include <winsock2.h>
#include <ws2tcpip.h>
#include <stdio.h>
#pragma comment(lib, "ws2_32.lib")
int main()
{
WSADATA wsaData
addrinfo hints, *rs
sockaddr_in serveraddr
SOCKET s
char host[256], hostIP[256], request[1024], *p
int rc, nBytes
WSAStartup(MAKEWORD(2, 2), &wsaData)
s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)
printf("plz input host name(eg.www.example.com):")
gets(host)
ZeroMemory(&hints, sizeof(addrinfo))
hints.ai_flags = AI_PASSIVE
hints.ai_family = AF_UNSPEC
hints.ai_socktype = SOCK_STREAM
hints.ai_protocol = IPPROTO_TCP
rc = getaddrinfo(host, "80", &hints, &rs)
if(rc != 0) {
printf("getaddrinfo failed with error code:%d\n", WSAGetLastError())
goto clean
}
getnameinfo(rs->ai_addr, rs->ai_addrlen, hostIP, NI_MAXHOST, NULL, 0, NI_NUMERICHOST)
printf("server ip is: %s\n", hostIP)
freeaddrinfo(rs)
serveraddr.sin_family = AF_INET
serveraddr.sin_addr.s_addr = inet_addr(hostIP)
serveraddr.sin_port = htons(80)
rc = connect(s, (SOCKADDR*) &serveraddr, sizeof(serveraddr))
if(rc != 0) {
printf("connect to server failed.")
goto clean
}
strcpy(request, "GET / HTTP/1.1\r\n")
strcat(request, "Host: ")
strcat(request, host)
strcat(request, "\r\nConnection: close\r\n\r\n")
send(s, request, strlen(request), 0)
while(1)
{
nBytes = recv(s, request, 1024, 0)
if(nBytes == SOCKET_ERROR)
{
printf("recv failed with error %d\n",WSAGetLastError())
goto clean
} else {
p = strstr(request, "Date:")
p += 5
while(*p == ' ') ++p
printf("server time: ")
while(*p != '\r')
putchar(*p++)
putchar('\n')
break
}
}
clean:
closesocket(s)
WSACleanup()
return 0
}
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)