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

right way to handle time between javascript and Rails

本文关键字:方法 时间 之间 javascript Rails 处理      更新时间:2023-09-26

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

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

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

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

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

Javascript日期对象基于UTC时间值,该值自1970-01-01T00:00:00Z以来为毫秒,UNIX时间值通常为自同一epoch以来的秒,因此您只需根据需要将毫秒除以或乘以1000(或只需修剪最后三位数字或连接"000")即可将毫秒转换为秒。

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

var date = new Date(UNIXTimevalue * 1000);

然后反过来:

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

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