Tom*_*man 32 ruby ruby-on-rails
是Time.zone.now.to_date相当于Date.today?
另一种说法:Time.zone.now.to_date == Date.today永远如此true?
如果没有,那么在应用程序时区中获取与"now"相对应的Date对象的最佳方法是什么?
Nad*_*leh 41
它们并不总是一样的.Time.zone.now.to_date将使用应用程序时区,而Date.today将使用服务器时区.因此,如果两者在不同的日期,那么他们将是不同的.我的控制台的一个例子:
ruby-1.9.2-p290 :036 > Time.zone = "Sydney"
=> "Sydney"
ruby-1.9.2-p290 :037 > Time.zone.now.to_date
=> Wed, 21 Sep 2011
ruby-1.9.2-p290 :038 > Date.today
=> Tue, 20 Sep 2011
Run Code Online (Sandbox Code Playgroud)
Tyl*_*ick 12
更简单: Time.zone.today
我还编写了一个小帮手方法Date.today_in_zone,可以很容易地获得Date特定时区的"今天" 而无需更改 Time.zone:
# Defaults to using Time.zone
> Date.today_in_zone
=> Fri, 26 Oct 2012
# Or specify a zone to use
> Date.today_in_zone('Sydney')
=> Sat, 27 Oct 2012
Run Code Online (Sandbox Code Playgroud)
要使用它,只需将其放在像'lib/date_extensions.rb'和的文件中require 'date_extensions'.
class Date
def self.today_in_zone(zone = ::Time.zone)
::Time.find_zone!(zone).today
end
end
Run Code Online (Sandbox Code Playgroud)