【问题标题】:right way to handle time between javascript and Rails处理 javascript 和 Rails 之间时间的正确方法
【发布时间】:2013-02-10 22:34:15
【问题描述】:

当通过 Ajax 检索记录时,我只希望在上次请求之后更新记录,而不是所有记录。我知道查询应该是这样的:

Post.where("updated_at >= ?", last_requested_at)

问题是,last_requested_at 必须存储在 Javascript 变量中,并作为 HTTP 查询字符串传递。

如何在 Javascript 和 Rails 之间编码/解码时间?我需要担心时区吗?

【问题讨论】:

  • 之前的请求过程是否密集?如果不是,我会选择 RobG 的解决方案,否则你可能会有竞争条件。
  • 我不认为有任何竞争条件。 javascript只读取数据,不写入。
  • 如果写入过程尚未完成,则读取将不包括最新更新。

标签: javascript ruby-on-rails datetime time


【解决方案1】:

一种常见的解决方案是将所有时间作为 UTC 时间值发送。

Javascript 日期对象基于 UTC 时间值,即自 1970-01-01T00:00:00Z 以来的毫秒数,UNIX 时间值通常是自同一纪元以来的秒数,因此您只需通过除以或乘以 1,000 将 ms 转换为秒视情况而定(或者只是修剪最后三位数字或连接“000”),你就完成了。

所以要从 UNIX 时间值创建一个 javascript 日期对象:

var date = new Date(UNIXTimevalue * 1000);

然后反过来:

var UTCTimevalue = date.getTime() / 1000 | 0;

客户端会根据系统设置来处理时区偏移,所以只要设置正确就可以了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-14
    • 1970-01-01
    • 2011-04-25
    • 2015-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-09
    相关资源
    最近更新 更多