gpt4 book ai didi

ruby-on-rails - 为什么 Date.yesterday 也算作 Date.today?

转载 作者:数据小太阳 更新时间:2023-10-29 06:46:34 26 4
gpt4 key购买 nike

我有以下模型和方法:

class UserPrice < ActiveRecord::Base
attr_accessible :price, :purchase_date,

def self.today
where(:purchase_date => Date.today)
end

def self.yesterday
where(:purchase_date => Date.yesterday)
end

为什么在我的表单上,如果我给日期选择字段 :purchase_date 1/4/2012(yesterday 方法)它也算作今天(today 方法),如果我给它 1/5/2012(今天)它是零?

附言我将 Rails 3.0.10 与 PostgreSQL 结合使用。


更新

这是我的控制台返回:

$ rails console --s
Loading development environment in sandbox (Rails 3.0.10)
Any modifications you make will be rolled back on exit
irb(main):001:0> Date.today
=> Wed, 04 Jan 2012
irb(main):002:0> Time.now
=> 2012-01-04 21:28:07 -0500
irb(main):003:0> Time.zone.now
=> Thu, 05 Jan 2012 02:28:18 UTC +00:00
irb(main):004:0> Date.yesterday
=> Wed, 04 Jan 2012
irb(main):005:0>

现在 yesterday 搞砸了,毫无意义....

最佳答案

发生这种情况是因为 calculations.rb 正在为配置的时区(默认为 UTC)调用 Date 类的“当前”方法。

如果您打开 Rails 控制台,您可以通过执行以下操作查看“Date.yesterday”正在计算的日期:

Time.zone.today

这可能会显示明天的日期。所以 Date.yesterday 对于 Rails 所看到的今天,就是今天。 ;)

您可以通过以下操作更直接地使用 Date 库:

Date.today.advance(:days => -1)

这会像您预期的那样为您提供昨天的日期,而 active_support 正在返回:

Date.current.advance(:days => -1) 

关于ruby-on-rails - 为什么 Date.yesterday 也算作 Date.today?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8736695/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com