Method: Time.zone_offset
- Defined in:
- lib/time.rb
.zone_offset(zone, year = self.now.year) ⇒ Object
Return the number of seconds the specified time zone differs from UTC.
Numeric time zones that include minutes, such as -10:00 or +1330 will work, as will simpler hour-only time zones like -10 or +13.
Textual time zones listed in ZoneOffset are also supported.
If the time zone does not match any of the above, zone_offset will check if the local time zone (both with and without potential Daylight Saving Time changes being in effect) matches zone. Specifying a value for year will change the year used to find the local time zone.
If zone_offset is unable to determine the offset, nil will be returned.
require 'time'
Time.zone_offset("EST") #=> -18000
You must require ‘time’ to use this method.
83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 |
# File 'lib/time.rb', line 83 def zone_offset(zone, year=self.now.year) off = nil zone = zone.upcase if /\A([+-])(\d\d)(:?)(\d\d)(?:\3(\d\d))?\z/ =~ zone off = ($1 == '-' ? -1 : 1) * (($2.to_i * 60 + $4.to_i) * 60 + $5.to_i) elsif zone.match?(/\A[+-]\d\d\z/) off = zone.to_i * 3600 elsif ZoneOffset.include?(zone) off = ZoneOffset[zone] * 3600 elsif ((t = self.local(year, 1, 1)).zone.upcase == zone rescue false) off = t.utc_offset elsif ((t = self.local(year, 7, 1)).zone.upcase == zone rescue false) off = t.utc_offset end off end |