mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Fixed TimeZone issues in action-pack and active-support #704
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@776 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
parent
11a2bb91f5
commit
65d3430baf
2 changed files with 17 additions and 7 deletions
|
@ -185,6 +185,9 @@ module ActionView
|
||||||
# (long) list. (You can use TimeZone.us_zones as a convenience for
|
# (long) list. (You can use TimeZone.us_zones as a convenience for
|
||||||
# obtaining a list of the US time zones.)
|
# obtaining a list of the US time zones.)
|
||||||
#
|
#
|
||||||
|
# The +selected+ parameter must be either +nil+, or a string that names
|
||||||
|
# a TimeZone.
|
||||||
|
#
|
||||||
# By default, +model+ is the TimeZone constant (which can be obtained
|
# By default, +model+ is the TimeZone constant (which can be obtained
|
||||||
# in ActiveRecord as a value object). The only requirement is that the
|
# in ActiveRecord as a value object). The only requirement is that the
|
||||||
# +model+ parameter be an object that responds to #all, and returns
|
# +model+ parameter be an object that responds to #all, and returns
|
||||||
|
@ -195,16 +198,17 @@ module ActionView
|
||||||
def time_zone_options_for_select(selected = nil, priority_zones = nil, model = TimeZone)
|
def time_zone_options_for_select(selected = nil, priority_zones = nil, model = TimeZone)
|
||||||
zone_options = ""
|
zone_options = ""
|
||||||
|
|
||||||
|
zones = model.all
|
||||||
|
convert_zones = lambda { |list| list.map { |z| [ z.to_s, z.name ] } }
|
||||||
|
|
||||||
if priority_zones
|
if priority_zones
|
||||||
zone_options += options_for_select(priority_zones, selected)
|
zone_options += options_for_select(convert_zones[priority_zones], selected)
|
||||||
zone_options += "<option>-------------</option>\n"
|
zone_options += "<option>-------------</option>\n"
|
||||||
|
|
||||||
zones = model.all.reject { |z| priority_zones.include?( z ) }
|
zones = zones.reject { |z| priority_zones.include?( z ) }
|
||||||
zone_options += options_for_select(zones, selected)
|
|
||||||
else
|
|
||||||
zone_options += options_for_select(model.all, selected)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
zone_options += options_for_select(convert_zones[zones], selected)
|
||||||
zone_options
|
zone_options
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -292,4 +296,4 @@ module ActionView
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -37,8 +37,14 @@ class TimeZone
|
||||||
adjust(Time.now)
|
adjust(Time.now)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Return the current date in this time zone.
|
||||||
|
def today
|
||||||
|
now.to_date
|
||||||
|
end
|
||||||
|
|
||||||
# Adjust the given time to the time zone represented by +self+.
|
# Adjust the given time to the time zone represented by +self+.
|
||||||
def adjust(time)
|
def adjust(time)
|
||||||
|
time = time.to_time
|
||||||
offset = time.utc_offset
|
offset = time.utc_offset
|
||||||
time + utc_offset - offset
|
time + utc_offset - offset
|
||||||
end
|
end
|
||||||
|
@ -152,4 +158,4 @@ class TimeZone
|
||||||
all.find_all { |z| z.name =~ US_ZONES }
|
all.find_all { |z| z.name =~ US_ZONES }
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue