2013-02-10 36 views
0

当通过Ajax检索记录时,我只希望在先前的请求之后更新记录,而不是所有记录。我知道查询应该是这样的:JavaScript和Rails之间处理时间的正确方法

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

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

如何编码/解码Javascript和Rails之间的时间?我是否需要担心时区?

+0

以前的请求过程密集吗?如果没有,我会选择RobG的解决方案,否则你可能会遇到竞争状况。 – eabraham 2013-02-10 23:01:45

+0

我不认为有任何竞争条件。 javascript只读取数据,不写。 – 2013-02-10 23:07:18

+0

如果写入过程尚未完成,则读取将不包含最新更新。 – eabraham 2013-02-10 23:11:38

回答

0

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

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

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

var date = new Date(UNIXTimevalue * 1000); 

和背部的其他方式:

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

客户端将处理时区偏移根据系统设置,所以只要他们是正确的,你就可以走了。

相关问题