js如何获取服务器端时间?

用js做时间校正,获取本机时间,是存在bug的。

使用js也可获取到服务器时间,原理是使用 ajax请求,返回的头部信息就含有服务器端的时间信息,获取到就可以了。以下:

1、依赖jQuery

代码:

function getServerDate(){
    return new Date($.ajax({async: false}).getResponseHeader("Date"));
}

以上函数返回的就是一个Date对象,注意在使用ajax时必须同步,要不然无法返回时间日期。

无需填写请求链接;

如果服务器时间和本地时间有时差,需要做校正。

2、原生

代码:

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状态来做不同的操作。

代码如下:

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: 未找到页面

时间: 2024-10-12 19:44:06

js如何获取服务器端时间?的相关文章

js实现获取当前时间是本月第几周和年的第几周的方法

js实现获取当前时间是本月第几周和年的第几周的方法 获取本月第几周的方法: 1 var getMonthWeek = function (a, b, c) { 2 /** 3 * a = d = 当前日期 4 * b = 6 - w = 当前周的还有几天过完(不算今天) 5 * a + b 的和在除以7 就是当天是当前月份的第几周 6 */ 7 var date = new Date(a, parseInt(b) - 1, c), 8 w = date.getDay(), 9 d = date.

Js 如何获取当前日期时间

var myDate = new Date();myDate.getYear(); //获取当前年份(2位)myDate.getFullYear(); //获取完整的年份(4位,1970-????)myDate.getMonth(); //获取当前月份(0-11,0代表1月)myDate.getDate(); //获取当前日(1-31)myDate.getDay(); //获取当前星期X(0-6,0代表星期天)myDate.getTime(); //获取当前时间(从1970.1.1开始的毫秒数)

js中获取当前时间

var d = new Date();var date = d.getFullYear() + "年" +(d.getMonth() + 1) + "月" + d.getDate() + "日"; var myDate = new Date();myDate.getYear();        //获取当前年份(2位)myDate.getFullYear();    //获取完整的年份(4位,1970-????)myDate.getMonth()

xml文件里 用js语句获取 当前时间

获取当前时间的代码:xml文件中 <td><div align="center"><br/><strong>送检时间</strong></div></td><td><br/> <script type="text/javascript"> function getNowFormatDate() { var date = new Date(); va

Titanium系列--利用js动态获取当前时间

动态获取时间: //显示时间 function getDateTime() { var now = new Date(); var year = now.getFullYear(); var month = now.getMonth()+1; var day = now.getDate(); //var hour = now.getHours(); //var minute = now.getMinutes(); //var second = now.getSeconds(); if(month

js 实现获取当前日期/时间/星期

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>date</title> <style type="text/css"> #dvs{ width:400px; height:30px; border:1px solid blue; } </style> </head> <body&g

HTML 中获取现在时间,实时时间获取

JavaScript   Date 对象 Date 对象用于处理日期与实际. 创建 Date 对象: var now  =  new Date(). 方法 描述 getDate() 从 Date 对象返回一个月中的某一天 (1 ~ 31). getDay() 从 Date 对象返回一周中的某一天 (0 ~ 6). getFullYear() 从 Date 对象以四位数字返回年份. getHours() 返回 Date 对象的小时 (0 ~ 23). getMilliseconds() 返回 Da

浅析libuv源码-获取精确时间

在Timer模块中有提到,libuv控制着延迟事件的触发,那么必须想办法精确控制时间. 如果是JS,获取当前时间可以直接通过Date.now()得到一个时间戳,然后将两段时间戳相减得到时间差.一般情况下当然没有问题,但是这个方法并不保险,因为本地计算机时间可以修改. libuv显然不会用这么愚蠢的办法来计算时间,C++内部有更为精妙的方法来处理这个事. 首先在上一节中,一个简单的事件轮询代码如下: int main() { uv_loop_t *loop = uv_default_loop();

前台获取当前时间

JS前台获取当前时间: var myDate = new Date(); myDate.getYear();        //获取当前年份(2位) myDate.getFullYear();    //获取完整的年份(4位,1970-????) myDate.getMonth();       //获取当前月份(0-11,0代表1月) myDate.getDate();        //获取当前日(1-31) myDate.getDay();         //获取当前星期X(0-6,0代