在RoR中Date.yesterday和Date.today.prev_day和1.day.ago之间的结果不同

时间:2017-03-04 02:48:48

标签: ruby-on-rails ruby date

我目前得到的结果不同取决于我前一天使用哪个命令。唯一正确的答案是1.day.ago

我可以理解为什么基于时区Date.yesterdayDate可能会有所不同,但我希望这两个irb(main):026:0> Date.today.prev_day => Thu, 02 Mar 2017 irb(main):027:0> Date.yesterday => Fri, 03 Mar 2017 irb(main):028:0> 1.day.ago => Fri, 03 Mar 2017 02:45:05 UTC +00:00 调用会产生标准化结果。

 $.magnificPopup.open

为什么我使用这三个命令获得不同的结果?

1 个答案:

答案 0 :(得分:0)

它按照我的预期运作:

2.2.3 :007 > Rails.version
 => "4.2.6" 
2.2.3 :002 > Date.today
 => Sun, 05 Mar 2017 
2.2.3 :003 > Date.today.prev_day
 => Sat, 04 Mar 2017 
2.2.3 :004 > Date.yesterday
 => Sun, 05 Mar 2017 
2.2.3 :005 > 1.day.ago
 => Sun, 05 Mar 2017 00:10:13 UTC +00:00 

我首先检查Date.today的结果,即today方法或prev_day方法中的问题。我还会检查该方法是否已被某种方式覆盖。您可以执行以下操作:

Date.today.method(:prev_day).source_location

为我返回nil