如何从客户端时间计算服务器时间

时间:2014-03-05 19:51:04

标签: javascript ruby-on-rails ruby

我的网页包含大量动态内容,只能在服务器时间内加载一次。

用户在网页上停留很长时间,做很多时间依赖的活动。 这些活动我需要使用服务器的日期时间(时间)登录浏览器 localstorage

那么如何在不向服务器发出新请求的情况下,从相对客户端时间计算或查找或获取服务器时间。

任何建议表示赞赏并提前致谢!

3 个答案:

答案 0 :(得分:1)

我使用以下方法从客户端时间获取服务器时间

  1. 第一次加载页面时,请考虑客户端时间和服务器时间的差异。

    var TIMEDIFF = new Date().getTime()-parseInt('<%= Time.now.to_i%>')*1000;
    
  2. 稍后执行以下操作以获取服务器时间,而无需从客户端时间向服务器发出请求。

    new Date().getTime()-TIMEDIFF
    

答案 1 :(得分:0)

这绝对不可能。如果客户端发生了某些事情,并且您没有向服务器发出请求,则服务器无法知道它。

但是,如果您只是意味着您不希望重新加载页面,则可以使用AJAX向服务器发送异步(后台)请求,而无需用户知道。

https://api.jquery.com/jQuery.ajax/

答案 2 :(得分:0)

您可以从Time.nowTime.new获取当前时间。时间对象组件可以在客户端Javascript上使用,以节省客户端系统上的时间。

#!/usr/bin/ruby -w

time = Time.new
# time = Time.now # => Also can be used
puts time.strftime("%Y,%m,%d,%H,%M,%S,%2N") # => "2014,03,06,02,41,29,85"

在JS中,日期对象可以用不同的方式初始化,例如:

  1. new Date(milliseconds) //milliseconds since 1970/01/01
  2. new Date(dateString)
  3. new Date(year, month, day, hours, minutes, seconds, milliseconds)
  4. 这里可以使用第三种方法。在rails模板文件中使用以下代码。

    var currentDate = new Date(<%= Time.now.strftime('%Y,%m,%d,%H,%M,%S,%2N') %>);
    alert(currentDate.toString()); 
    
相关问题