我需要比较两个日期:一个日期取自表格、created_at
列,另一个取自(我不知道,服务器时间或客户端时间)。
那么这样比较它们可以吗?
t.strftime("%Y-%d-%m") == Time.now.strftime("%Y-%d-%m")
t
表 row.create_at在哪里。
现在,我t
将与之比较的时间,Time.now 是从我的计算机还是从服务器获取的?
如果取自我的电脑,我该如何使用服务器时间?
我需要比较两个日期:一个日期取自表格、created_at
列,另一个取自(我不知道,服务器时间或客户端时间)。
那么这样比较它们可以吗?
t.strftime("%Y-%d-%m") == Time.now.strftime("%Y-%d-%m")
t
表 row.create_at在哪里。
现在,我t
将与之比较的时间,Time.now 是从我的计算机还是从服务器获取的?
如果取自我的电脑,我该如何使用服务器时间?
由于 Rails 知道您的时间信息以 UTC 格式存储在数据库中,因此它会在您给它的任何时间转换为 UTC。
我认为我们应该使用
t.strftime("%Y-%d-%m") == Time.zone.now.strftime("%Y-%d-%m")
在的地方
t.strftime("%Y-%d-%m") == Time.now.strftime("%Y-%d-%m")
只要确保永远不要手动构建查询字符串,并始终使用 Time.zone.now 作为基础,您应该是安全的。
有关更多信息,请通过使用时区
此比较将按预期工作,因为您将时间转换为字符串,然后比较字符串。我通常转换为整数进行比较,但由于您要比较日期,因此您需要先将时间对象转换为日期对象。
Ruby 在服务器上执行,因此Time.now
始终是服务器时间。如果您想与 UTC 时间进行比较,请使用Time.current