0

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

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

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

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

4

1 回答 1

0

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

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

因此,要从 UNIX 时间值创建 javascript 日期对象:

var date = new Date(UNIXTimevalue * 1000);

并以另一种方式返回:

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

客户端将根据系统设置处理时区偏移,因此只要它们正确,您就可以开始了。

于 2013-02-10T22:45:53.257 回答