Mis*_*hko 68 timezone ruby-on-rails date ruby-on-rails-3
为了得到今天的约会,我做了:
Date.today # => Fri, 20 May 2011
Run Code Online (Sandbox Code Playgroud)
我想在特定的时区得到今天的日期'Melbourne'.
我的设置如下application.rb:
config.time_zone = 'Melbourne'
Run Code Online (Sandbox Code Playgroud)
我设定:
Time.zone = 'Melbourne'
Run Code Online (Sandbox Code Playgroud)
在每个动作之前我的应用程序控制器
但是,它没有帮助(我想因为这些设置只影响存储在数据库中的日期).
我怎么能得到今天的约会'Melbourne'?
Dyl*_*kow 63
Date对象不一定有时区,但Time对象有.您可以尝试将其作为a Time,然后转换回Date:
Time.now.to_date
# => Thu, 19 May 2011
Time.now.in_time_zone('Melbourne').to_date
# => Fri, 20 May 2011
Run Code Online (Sandbox Code Playgroud)
Rya*_*igg 59
你应该能够这样做:Time.current.这将显示墨尔本的当前时间,如果这Time.zone是设置的.
Jos*_*osh 32
Date.currentDate.current 可能是最明确和简洁的方式,并在Rails 3中添加.
$ Date.current
#=> Sat, 14 Jul 2018
Run Code Online (Sandbox Code Playgroud)
http://apidock.com/rails/v3.2.13/Date/current/class
Tyl*_*ick 12
如果你想在某个指定时区"今天"而不必改变Time.zone,我会做一些像fl00r和Dylan Markow建议:
Time.now.in_time_zone('Melbourne').to_date
Run Code Online (Sandbox Code Playgroud)
或这个:
Time.find_zone!('Melbourne').today
Run Code Online (Sandbox Code Playgroud)
我写了一个小帮手方法Date.today_in_zone,让Date时区的"今天" 变得更加容易:
# Defaults to using Time.zone
> Date.today_in_zone
=> Fri, 26 Oct 2012
# Or specify a zone to use
> Date.today_in_zone('Melbourne')
=> Sat, 27 Oct 2012
Run Code Online (Sandbox Code Playgroud)
我认为它看起来比Time.find_zone!('Melbourne').today... 更好一点
要使用它,只需将其放在像'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)