js如何获取服务器端时间?
用js做时间校正,获取本机时间,是存在bug的。
使用js也可获取到服务器时间,原理是使用 ajax请求,返回的头部信息就含有服务器端的时间信息,获取到就可以了。以下:
1、依赖jQuery
代码:
1 2 3 | function getServerDate(){ return new Date($.ajax({async: false }).getResponseHeader( "Date" )); } |
以上函数返回的就是一个Date对象,注意在使用ajax时必须同步,要不然无法返回时间日期。
无需填写请求链接;
如果服务器时间和本地时间有时差,需要做校正。
2、原生
代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 | function getServerDate(){ var xhr = null ; if (window.XMLHttpRequest){ xhr = new window.XMLHttpRequest(); } else { // ie xhr = new ActiveObject( "Microsoft" ) } xhr.open( "GET" , "/" , false ) //false不可变 xhr.send( null ); var date = xhr.getResponseHeader( "Date" ); return new Date(date); } |
返回的是一个Date对象,xhr.open()必须使用同步;
无需填写请求链接;open,send,和getResponseHeader 必须按序编写。
如需使用异步请求,可监听onreadystatechange状态来做不同的操作。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | function getServerDate(){ var xhr = null ; if (window.XMLHttpRequest){ xhr = new window.XMLHttpRequest(); } else { // ie xhr = new ActiveObject( "Microsoft" ) } xhr.open( "GET" , "/" , true ); xhr.send( null ); xhr.onreadystatechange= function (){ var time,date; if (xhr.readyState == 2){ time = xhr.getResponseHeader( "Date" ); date = new Date(time); console.log(date); } } } |
使用异步不是很方便返回时间。
这里的readyState有四种状态,方便做不同处理:
- 0: 请求未初始化
- 1: 服务器连接已建立
- 2: 请求已接收
- 3: 请求处理中
- 4: 请求已完成,且响应已就绪
失败状态,status的值:
200: "OK"
404: 未找到页面
转自:http://www.cnblogs.com/hellobook/p/6112182.html
另外,如果服务器时间较对可以用:http://bjtime.cn/nt.asp
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具