PHP获取当前服务器时间

PHP获取当前服务器时间,第1张

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

}


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/319005.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存