2017-03-04 82 views
0

目前我正在得到不同的結果,具體取決於我用於獲取前一天的哪個命令。唯一正確的答案是Date.today.prev_dayRoR中Date.yesterday和Date.today.prev_day和1.day.ago之間的不同結果

我可以理解爲什麼1.day.agoDate.yesterday可能會根據時區不同,但我希望從兩個Date調用標準化的結果。

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 

爲什麼我用這三個命令得到不同的結果?

+1

問題是什麼? –

+0

'''''''''''prev_day'通常不會在'irb'中使用。你如何加載它。對於最後一個'1.day.ago'可以更好地理解爲'86,400秒前'。 –

+0

@MarcRohloff我只是在做'rails console' – etc

回答

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

相關問題