处理javascript和Rails之间时间的正确方法

处理javascript和Rails之间时间的正确方法,javascript,ruby-on-rails,datetime,time,Javascript,Ruby On Rails,Datetime,Time,在通过Ajax检索记录时,我只希望在上一个请求之后更新记录,而不是更新所有记录。我知道查询应该是这样的: Post.where("updated_at >= ?", last_requested_at) 问题是,的上次请求必须存储在Javascript变量中,并作为HTTP查询字符串传递 如何对Javascript和Rails之间的时间进行编码/解码?我必须担心时区吗?一个常见的解决方案是将所有时间作为UTC时间值发送 Javascript日期对象基于UTC时间值,即自1970-01-0

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

Post.where("updated_at >= ?", last_requested_at)
问题是,的上次请求必须存储在Javascript变量中,并作为HTTP查询字符串传递


如何对Javascript和Rails之间的时间进行编码/解码?我必须担心时区吗?

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

Javascript日期对象基于UTC时间值,即自1970-01-01T00:00:00Z起的毫秒,UNIX时间值通常是自同一纪元起的秒,因此您只需将毫秒转换为秒,并根据需要除以或乘以1000(或仅修剪最后三位数字或串联“000”),即可完成

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

var date = new Date(UNIXTimevalue * 1000);
反过来说:

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

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

上一个请求过程是否密集?如果不是的话,我会同意罗布的解决方案,否则你可能会有一个比赛条件。我不认为有任何比赛条件。javascript只读取数据,不写入。如果写入过程尚未完成,则读取将不包括最新更新。