Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用JavaScript获取服务器日期?_Javascript_Angularjs - Fatal编程技术网

如何使用JavaScript获取服务器日期?

如何使用JavaScript获取服务器日期?,javascript,angularjs,Javascript,Angularjs,我正在使用AngularJS客户端应用程序,处理日期和时间。我的问题是任何人都可以更改本地系统日期,为了保护这一点,我想使用服务器日期,而不需要任何get或post请求。有没有办法使用JavaScript获取服务器日期 如果在客户端运行JavaScript,查找服务器时间的唯一方法是询问服务器当前时间是多少。这里没有魔法。您需要向服务器发出请求 选项: 使用或 如果HTML页面在服务器中呈现,则可以在页面呈现期间写入当前时间并将其发送给客户端 请注意,由于网络延迟,服务器的时间不可能精确,但您可

我正在使用AngularJS客户端应用程序,处理日期和时间。我的问题是任何人都可以更改本地系统日期,为了保护这一点,我想使用服务器日期,而不需要任何get或post请求。有没有办法使用JavaScript获取服务器日期

如果在客户端运行JavaScript,查找服务器时间的唯一方法是询问服务器当前时间是多少。这里没有魔法。您需要向服务器发出请求

选项:

  • 使用或
  • 如果HTML页面在服务器中呈现,则可以在页面呈现期间写入当前时间并将其发送给客户端
  • 请注意,由于网络延迟,服务器的时间不可能精确,但您可以使用(修改后的)代码非常接近:


    等待JavaScript是客户端语言。您将需要“请求”服务器端获取时间。请注意,连接和加载时间可能会影响所获得时间的准确性。您将需要额外的ajax请求。。。。加载可能会影响时间的准确性……使用ajax post req是否可能?请记住,即使您成功地从服务器获取日期,恶意客户端仍可能更改日期。如果准确的日期对系统至关重要,则必须在服务器端进行验证。“为了保护这一点,我希望使用服务器日期,而无需任何get或post请求“哈,什么?@epascarello这只是一个AJAX电话。jQuery可能在IE内部实现了这一点。信不信由你,仍然有一些组织的架构神不允许jQuery或任何其他开源。*叹息*@epascarello,我已经更新了答案,删除了旧的ActiveX引用。OP特别声明“没有任何get或post请求”。你是不是因为做了完全相反的事而期待着荣誉?
    var offset = 0;
    function calcOffset() {
        var xmlhttp = new XMLHttpRequest();
        xmlhttp.open("GET", "https://stackoverflow.com/", false);
        xmlhttp.send();
    
        var dateStr = xmlhttp.getResponseHeader('Date');
        var serverTimeMillisGMT = Date.parse(new Date(Date.parse(dateStr)).toUTCString());
        var localMillisUTC = Date.parse(new Date().toUTCString());
    
        offset = serverTimeMillisGMT -  localMillisUTC;
    }
    
    function getServerTime() {
        var date = new Date();
    
        date.setTime(date.getTime() + offset);
    
        return date;
    }