通过 Ajax 检索记录时,我只希望在上次请求之后更新记录,而不是所有记录。我知道查询应该如下所示:
Post.where("updated_at >= ?", last_requested_at)
问题是,last_requested_at
必须存储在 Javascript 变量中,并作为 HTTP 查询字符串传递。
如何在 Javascript 和 Rails 之间编码/解码时间?我需要担心时区吗?
通过 Ajax 检索记录时,我只希望在上次请求之后更新记录,而不是所有记录。我知道查询应该如下所示:
Post.where("updated_at >= ?", last_requested_at)
问题是,last_requested_at
必须存储在 Javascript 变量中,并作为 HTTP 查询字符串传递。
如何在 Javascript 和 Rails 之间编码/解码时间?我需要担心时区吗?
一个常见的解决方案是将所有时间作为 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;
客户端将根据系统设置处理时区偏移,因此只要它们正确,您就可以开始了。