Class: ActiveSupport::TimeZone
- Includes:
 - Comparable
 
- Defined in:
 - lib/active_support/values/time_zone.rb
 
Overview
Active Support Time Zone
The TimeZone class serves as a wrapper around TZInfo::Timezone instances. It allows us to do the following:
- 
Limit the set of zones provided by TZInfo to a meaningful subset of 134 zones.
 - 
Retrieve and display zones with a friendlier name (e.g., “Eastern Time (US & Canada)” instead of “America/New_York”).
 - 
Lazily load
TZInfo::Timezoneinstances only when they’re needed. - 
Create ActiveSupport::TimeWithZone instances via TimeZone’s
local,parse,at, andnowmethods. 
If you set config.time_zone in the Rails Application, you can access this TimeZone object via Time.zone:
# application.rb:
class Application < Rails::Application
  config.time_zone = 'Eastern Time (US & Canada)'
end
Time.zone      # => #<ActiveSupport::TimeZone:0x514834...>
Time.zone.name # => "Eastern Time (US & Canada)"
Time.zone.now  # => Sun, 18 May 2008 14:30:44 EDT -04:00
  Constant Summary collapse
- MAPPING =
          
Keys are Rails TimeZone names, values are TZInfo identifiers.
 { "International Date Line West" => "Etc/GMT+12", "Midway Island" => "Pacific/Midway", "American Samoa" => "Pacific/Pago_Pago", "Hawaii" => "Pacific/Honolulu", "Alaska" => "America/Juneau", "Pacific Time (US & Canada)" => "America/Los_Angeles", "Tijuana" => "America/Tijuana", "Mountain Time (US & Canada)" => "America/Denver", "Arizona" => "America/Phoenix", "Chihuahua" => "America/Chihuahua", "Mazatlan" => "America/Mazatlan", "Central Time (US & Canada)" => "America/Chicago", "Saskatchewan" => "America/Regina", "Guadalajara" => "America/Mexico_City", "Mexico City" => "America/Mexico_City", "Monterrey" => "America/Monterrey", "Central America" => "America/Guatemala", "Eastern Time (US & Canada)" => "America/New_York", "Indiana (East)" => "America/Indiana/Indianapolis", "Bogota" => "America/Bogota", "Lima" => "America/Lima", "Quito" => "America/Lima", "Atlantic Time (Canada)" => "America/Halifax", "Caracas" => "America/Caracas", "La Paz" => "America/La_Paz", "Santiago" => "America/Santiago", "Asuncion" => "America/Asuncion", "Newfoundland" => "America/St_Johns", "Brasilia" => "America/Sao_Paulo", "Buenos Aires" => "America/Argentina/Buenos_Aires", "Montevideo" => "America/Montevideo", "Georgetown" => "America/Guyana", "Puerto Rico" => "America/Puerto_Rico", "Greenland" => "America/Nuuk", "Mid-Atlantic" => "Atlantic/South_Georgia", "Azores" => "Atlantic/Azores", "Cape Verde Is." => "Atlantic/Cape_Verde", "Dublin" => "Europe/Dublin", "Edinburgh" => "Europe/London", "Lisbon" => "Europe/Lisbon", "London" => "Europe/London", "Casablanca" => "Africa/Casablanca", "Monrovia" => "Africa/Monrovia", "UTC" => "Etc/UTC", "Belgrade" => "Europe/Belgrade", "Bratislava" => "Europe/Bratislava", "Budapest" => "Europe/Budapest", "Ljubljana" => "Europe/Ljubljana", "Prague" => "Europe/Prague", "Sarajevo" => "Europe/Sarajevo", "Skopje" => "Europe/Skopje", "Warsaw" => "Europe/Warsaw", "Zagreb" => "Europe/Zagreb", "Brussels" => "Europe/Brussels", "Copenhagen" => "Europe/Copenhagen", "Madrid" => "Europe/Madrid", "Paris" => "Europe/Paris", "Amsterdam" => "Europe/Amsterdam", "Berlin" => "Europe/Berlin", "Bern" => "Europe/Zurich", "Zurich" => "Europe/Zurich", "Rome" => "Europe/Rome", "Stockholm" => "Europe/Stockholm", "Vienna" => "Europe/Vienna", "West Central Africa" => "Africa/Algiers", "Bucharest" => "Europe/Bucharest", "Cairo" => "Africa/Cairo", "Helsinki" => "Europe/Helsinki", "Kyiv" => "Europe/Kiev", "Riga" => "Europe/Riga", "Sofia" => "Europe/Sofia", "Tallinn" => "Europe/Tallinn", "Vilnius" => "Europe/Vilnius", "Athens" => "Europe/Athens", "Istanbul" => "Europe/Istanbul", "Minsk" => "Europe/Minsk", "Jerusalem" => "Asia/Jerusalem", "Harare" => "Africa/Harare", "Pretoria" => "Africa/Johannesburg", "Kaliningrad" => "Europe/Kaliningrad", "Moscow" => "Europe/Moscow", "St. Petersburg" => "Europe/Moscow", "Volgograd" => "Europe/Volgograd", "Samara" => "Europe/Samara", "Kuwait" => "Asia/Kuwait", "Riyadh" => "Asia/Riyadh", "Nairobi" => "Africa/Nairobi", "Baghdad" => "Asia/Baghdad", "Tehran" => "Asia/Tehran", "Abu Dhabi" => "Asia/Muscat", "Muscat" => "Asia/Muscat", "Baku" => "Asia/Baku", "Tbilisi" => "Asia/Tbilisi", "Yerevan" => "Asia/Yerevan", "Kabul" => "Asia/Kabul", "Ekaterinburg" => "Asia/Yekaterinburg", "Islamabad" => "Asia/Karachi", "Karachi" => "Asia/Karachi", "Tashkent" => "Asia/Tashkent", "Chennai" => "Asia/Kolkata", "Kolkata" => "Asia/Kolkata", "Mumbai" => "Asia/Kolkata", "New Delhi" => "Asia/Kolkata", "Kathmandu" => "Asia/Kathmandu", "Dhaka" => "Asia/Dhaka", "Sri Jayawardenepura" => "Asia/Colombo", "Almaty" => "Asia/Almaty", "Astana" => "Asia/Almaty", "Novosibirsk" => "Asia/Novosibirsk", "Rangoon" => "Asia/Rangoon", "Bangkok" => "Asia/Bangkok", "Hanoi" => "Asia/Bangkok", "Jakarta" => "Asia/Jakarta", "Krasnoyarsk" => "Asia/Krasnoyarsk", "Beijing" => "Asia/Shanghai", "Chongqing" => "Asia/Chongqing", "Hong Kong" => "Asia/Hong_Kong", "Urumqi" => "Asia/Urumqi", "Kuala Lumpur" => "Asia/Kuala_Lumpur", "Singapore" => "Asia/Singapore", "Taipei" => "Asia/Taipei", "Perth" => "Australia/Perth", "Irkutsk" => "Asia/Irkutsk", "Ulaanbaatar" => "Asia/Ulaanbaatar", "Seoul" => "Asia/Seoul", "Osaka" => "Asia/Tokyo", "Sapporo" => "Asia/Tokyo", "Tokyo" => "Asia/Tokyo", "Yakutsk" => "Asia/Yakutsk", "Darwin" => "Australia/Darwin", "Adelaide" => "Australia/Adelaide", "Canberra" => "Australia/Canberra", "Melbourne" => "Australia/Melbourne", "Sydney" => "Australia/Sydney", "Brisbane" => "Australia/Brisbane", "Hobart" => "Australia/Hobart", "Vladivostok" => "Asia/Vladivostok", "Guam" => "Pacific/Guam", "Port Moresby" => "Pacific/Port_Moresby", "Magadan" => "Asia/Magadan", "Srednekolymsk" => "Asia/Srednekolymsk", "Solomon Is." => "Pacific/Guadalcanal", "New Caledonia" => "Pacific/Noumea", "Fiji" => "Pacific/Fiji", "Kamchatka" => "Asia/Kamchatka", "Marshall Is." => "Pacific/Majuro", "Auckland" => "Pacific/Auckland", "Wellington" => "Pacific/Auckland", "Nuku'alofa" => "Pacific/Tongatapu", "Tokelau Is." => "Pacific/Fakaofo", "Chatham Is." => "Pacific/Chatham", "Samoa" => "Pacific/Apia" }
Instance Attribute Summary collapse
- 
  
    
      #name  ⇒ Object 
    
    
  
  
  
  
    
      readonly
    
    
  
  
  
  
  
  
    
Returns the value of attribute name.
 - 
  
    
      #tzinfo  ⇒ Object 
    
    
  
  
  
  
    
      readonly
    
    
  
  
  
  
  
  
    
Returns the value of attribute tzinfo.
 
Class Method Summary collapse
- 
  
    
      .[](arg)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Locate a specific time zone object.
 - 
  
    
      .all  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Returns an array of all TimeZone objects.
 - 
  
    
      .clear  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
:nodoc:.
 - 
  
    
      .country_zones(country_code)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
A convenience method for returning a collection of TimeZone objects for time zones in the country specified by its ISO 3166-1 Alpha2 code.
 - 
  
    
      .create  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
:nodoc:.
 - .find_tzinfo(name) ⇒ Object
 - 
  
    
      .new(name)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Returns a TimeZone instance with the given name, or
nilif no such TimeZone instance exists. - 
  
    
      .seconds_to_utc_offset(seconds, colon = true)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Assumes self represents an offset from UTC in seconds (as returned from Time#utc_offset) and turns this into an +HH:MM formatted string.
 - 
  
    
      .us_zones  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
A convenience method for returning a collection of TimeZone objects for time zones in the USA.
 
Instance Method Summary collapse
- 
  
    
      #<=>(zone)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Compare this time zone to the parameter.
 - 
  
    
      #=~(re)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Compare #name and TZInfo identifier to a supplied regexp, returning
trueif a match is found. - 
  
    
      #abbr(time)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
:nodoc:.
 - 
  
    
      #at(*args)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Method for creating new ActiveSupport::TimeWithZone instance in time zone of
selffrom number of seconds since the Unix epoch. - 
  
    
      #dst?(time)  ⇒ Boolean 
    
    
  
  
  
  
  
  
  
  
  
    
:nodoc:.
 - 
  
    
      #encode_with(coder)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
:nodoc:.
 - 
  
    
      #formatted_offset(colon = true, alternate_utc_string = nil)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Returns a formatted string of the offset from UTC, or an alternative string if the time zone is already UTC.
 - 
  
    
      #init_with(coder)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
:nodoc:.
 - 
  
    
      #initialize(name, utc_offset = nil, tzinfo = nil)  ⇒ TimeZone 
    
    
  
  
  
    constructor
  
  
  
  
  
  
  
    
:stopdoc:.
 - 
  
    
      #iso8601(str)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Method for creating new ActiveSupport::TimeWithZone instance in time zone of
selffrom an ISO 8601 string. - 
  
    
      #local(*args)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Method for creating new ActiveSupport::TimeWithZone instance in time zone of
selffrom given values. - 
  
    
      #local_to_utc(time, dst = true)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Adjust the given time to the simultaneous time in UTC.
 - 
  
    
      #match?(re)  ⇒ Boolean 
    
    
  
  
  
  
  
  
  
  
  
    
Compare #name and TZInfo identifier to a supplied regexp, returning
trueif a match is found. - 
  
    
      #now  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Returns an ActiveSupport::TimeWithZone instance representing the current time in the time zone represented by
self. - 
  
    
      #parse(str, now = now())  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Method for creating new ActiveSupport::TimeWithZone instance in time zone of
selffrom parsed string. - 
  
    
      #period_for_local(time, dst = true)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
:nodoc:.
 - 
  
    
      #period_for_utc(time)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
:nodoc:.
 - 
  
    
      #periods_for_local(time)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
:nodoc:.
 - 
  
    
      #rfc3339(str)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Method for creating new ActiveSupport::TimeWithZone instance in time zone of
selffrom an RFC 3339 string. - 
  
    
      #standard_name  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Returns a standard time zone name defined by IANA www.iana.org/time-zones.
 - 
  
    
      #strptime(str, format, now = now())  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Parses
straccording toformatand returns an ActiveSupport::TimeWithZone. - 
  
    
      #to_s  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Returns a textual representation of this time zone.
 - 
  
    
      #today  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Returns the current date in this time zone.
 - 
  
    
      #tomorrow  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Returns the next date in this time zone.
 - 
  
    
      #utc_offset  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Returns the offset of this time zone from UTC in seconds.
 - 
  
    
      #utc_to_local(time)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Adjust the given time to the simultaneous time in the time zone represented by
self. - 
  
    
      #yesterday  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Returns the previous date in this time zone.
 
Constructor Details
#initialize(name, utc_offset = nil, tzinfo = nil) ⇒ TimeZone
:stopdoc:
      310 311 312 313 314  | 
    
      # File 'lib/active_support/values/time_zone.rb', line 310 def initialize(name, utc_offset = nil, tzinfo = nil) @name = name @utc_offset = utc_offset @tzinfo = tzinfo || TimeZone.find_tzinfo(name) end  | 
  
Instance Attribute Details
#name ⇒ Object (readonly)
Returns the value of attribute name.
      297 298 299  | 
    
      # File 'lib/active_support/values/time_zone.rb', line 297 def name @name end  | 
  
#tzinfo ⇒ Object (readonly)
Returns the value of attribute tzinfo.
      298 299 300  | 
    
      # File 'lib/active_support/values/time_zone.rb', line 298 def tzinfo @tzinfo end  | 
  
Class Method Details
.[](arg) ⇒ Object
Locate a specific time zone object. If the argument is a string, it is interpreted to mean the name of the timezone to locate. If it is a numeric value it is either the hour offset, or the second offset, of the timezone to find. (The first one with that offset will be returned.) Returns nil if no such time zone is known to the system.
      233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251  | 
    
      # File 'lib/active_support/values/time_zone.rb', line 233 def [](arg) case arg when self arg when String begin @lazy_zones_map[arg] ||= create(arg) rescue TZInfo::InvalidTimezoneIdentifier nil end when TZInfo::Timezone @lazy_zones_map[arg.name] ||= create(arg.name, nil, arg) when Numeric, ActiveSupport::Duration arg *= 3600 if arg.abs <= 13 all.find { |z| z.utc_offset == arg.to_i } else raise ArgumentError, "invalid argument to TimeZone[]: #{arg.inspect}" end end  | 
  
.all ⇒ Object
Returns an array of all TimeZone objects. There are multiple TimeZone objects per time zone, in many cases, to make it easier for users to find their own time zone.
      224 225 226  | 
    
      # File 'lib/active_support/values/time_zone.rb', line 224 def all @zones ||= zones_map.values.sort end  | 
  
.clear ⇒ Object
:nodoc:
      266 267 268 269 270 271  | 
    
      # File 'lib/active_support/values/time_zone.rb', line 266 def clear # :nodoc: @lazy_zones_map = Concurrent::Map.new @country_zones = Concurrent::Map.new @zones = nil @zones_map = nil end  | 
  
.country_zones(country_code) ⇒ Object
A convenience method for returning a collection of TimeZone objects for time zones in the country specified by its ISO 3166-1 Alpha2 code.
      261 262 263 264  | 
    
      # File 'lib/active_support/values/time_zone.rb', line 261 def country_zones(country_code) code = country_code.to_s.upcase @country_zones[code] ||= load_country_zones(code) end  | 
  
.create ⇒ Object
:nodoc:
      212  | 
    
      # File 'lib/active_support/values/time_zone.rb', line 212 alias_method :create, :new  | 
  
.find_tzinfo(name) ⇒ Object
      208 209 210  | 
    
      # File 'lib/active_support/values/time_zone.rb', line 208 def find_tzinfo(name) TZInfo::Timezone.get(MAPPING[name] || name) end  | 
  
.new(name) ⇒ Object
Returns a TimeZone instance with the given name, or nil if no such TimeZone instance exists. (This exists to support the use of this class with the composed_of macro.)
      217 218 219  | 
    
      # File 'lib/active_support/values/time_zone.rb', line 217 def new(name) self[name] end  | 
  
.seconds_to_utc_offset(seconds, colon = true) ⇒ Object
Assumes self represents an offset from UTC in seconds (as returned from Time#utc_offset) and turns this into an +HH:MM formatted string.
ActiveSupport::TimeZone.seconds_to_utc_offset(-21_600) # => "-06:00"
  
      200 201 202 203 204 205 206  | 
    
      # File 'lib/active_support/values/time_zone.rb', line 200 def seconds_to_utc_offset(seconds, colon = true) format = colon ? UTC_OFFSET_WITH_COLON : UTC_OFFSET_WITHOUT_COLON sign = (seconds < 0 ? "-" : "+") hours = seconds.abs / 3600 minutes = (seconds.abs % 3600) / 60 format % [sign, hours, minutes] end  | 
  
.us_zones ⇒ Object
A convenience method for returning a collection of TimeZone objects for time zones in the USA.
      255 256 257  | 
    
      # File 'lib/active_support/values/time_zone.rb', line 255 def us_zones country_zones(:us) end  | 
  
Instance Method Details
#<=>(zone) ⇒ Object
Compare this time zone to the parameter. The two are compared first on their offsets, and then by name.
      340 341 342 343 344 345  | 
    
      # File 'lib/active_support/values/time_zone.rb', line 340 def <=>(zone) return unless zone.respond_to? :utc_offset result = (utc_offset <=> zone.utc_offset) result = (name <=> zone.name) if result == 0 result end  | 
  
#=~(re) ⇒ Object
Compare #name and TZInfo identifier to a supplied regexp, returning true if a match is found.
      349 350 351  | 
    
      # File 'lib/active_support/values/time_zone.rb', line 349 def =~(re) re === name || re === MAPPING[name] end  | 
  
#abbr(time) ⇒ Object
:nodoc:
      574 575 576  | 
    
      # File 'lib/active_support/values/time_zone.rb', line 574 def abbr(time) # :nodoc: tzinfo.abbr(time) end  | 
  
#at(*args) ⇒ Object
Method for creating new ActiveSupport::TimeWithZone instance in time zone of self from number of seconds since the Unix epoch.
Time.zone = 'Hawaii'        # => "Hawaii"
Time.utc(2000).to_f         # => 946684800.0
Time.zone.at(946684800.0)   # => Fri, 31 Dec 1999 14:00:00 HST -10:00
A second argument can be supplied to specify sub-second precision.
Time.zone = 'Hawaii'                # => "Hawaii"
Time.at(946684800, 123456.789).nsec # => 123456789
  
      386 387 388  | 
    
      # File 'lib/active_support/values/time_zone.rb', line 386 def at(*args) Time.at(*args).utc.in_time_zone(self) end  | 
  
#dst?(time) ⇒ Boolean
:nodoc:
      578 579 580  | 
    
      # File 'lib/active_support/values/time_zone.rb', line 578 def dst?(time) # :nodoc: tzinfo.dst?(time) end  | 
  
#encode_with(coder) ⇒ Object
:nodoc:
      586 587 588 589  | 
    
      # File 'lib/active_support/values/time_zone.rb', line 586 def encode_with(coder) # :nodoc: coder.tag = "!ruby/object:#{self.class}" coder.map = { "name" => tzinfo.name } end  | 
  
#formatted_offset(colon = true, alternate_utc_string = nil) ⇒ Object
Returns a formatted string of the offset from UTC, or an alternative string if the time zone is already UTC.
zone = ActiveSupport::TimeZone['Central Time (US & Canada)']
zone.formatted_offset        # => "-06:00"
zone.formatted_offset(false) # => "-0600"
  
      334 335 336  | 
    
      # File 'lib/active_support/values/time_zone.rb', line 334 def formatted_offset(colon = true, alternate_utc_string = nil) utc_offset == 0 && alternate_utc_string || self.class.seconds_to_utc_offset(utc_offset, colon) end  | 
  
#init_with(coder) ⇒ Object
:nodoc:
      582 583 584  | 
    
      # File 'lib/active_support/values/time_zone.rb', line 582 def init_with(coder) # :nodoc: initialize(coder["name"]) end  | 
  
#iso8601(str) ⇒ Object
Method for creating new ActiveSupport::TimeWithZone instance in time zone of self from an ISO 8601 string.
Time.zone = 'Hawaii'                     # => "Hawaii"
Time.zone.iso8601('1999-12-31T14:00:00') # => Fri, 31 Dec 1999 14:00:00 HST -10:00
If the time components are missing then they will be set to zero.
Time.zone = 'Hawaii'            # => "Hawaii"
Time.zone.iso8601('1999-12-31') # => Fri, 31 Dec 1999 00:00:00 HST -10:00
If the string is invalid then an ArgumentError will be raised unlike parse which usually returns nil when given an invalid date string.
      403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440  | 
    
      # File 'lib/active_support/values/time_zone.rb', line 403 def iso8601(str) # Historically `Date._iso8601(nil)` returns `{}`, but in the `date` gem versions `3.2.1`, `3.1.2`, `3.0.2`, # and `2.0.1`, `Date._iso8601(nil)` raises `TypeError` https://github.com/ruby/date/issues/39 # Future `date` releases are expected to revert back to the original behavior. raise ArgumentError, "invalid date" if str.nil? parts = Date._iso8601(str) year = parts.fetch(:year) if parts.key?(:yday) ordinal_date = Date.ordinal(year, parts.fetch(:yday)) month = ordinal_date.month day = ordinal_date.day else month = parts.fetch(:mon) day = parts.fetch(:mday) end time = Time.new( year, month, day, parts.fetch(:hour, 0), parts.fetch(:min, 0), parts.fetch(:sec, 0) + parts.fetch(:sec_fraction, 0), parts.fetch(:offset, 0) ) if parts[:offset] TimeWithZone.new(time.utc, self) else TimeWithZone.new(nil, self, time) end rescue Date::Error, KeyError raise ArgumentError, "invalid date" end  | 
  
#local(*args) ⇒ Object
      370 371 372 373  | 
    
      # File 'lib/active_support/values/time_zone.rb', line 370 def local(*args) time = Time.utc(*args) ActiveSupport::TimeWithZone.new(nil, self, time) end  | 
  
#local_to_utc(time, dst = true) ⇒ Object
Adjust the given time to the simultaneous time in UTC. Returns a Time.utc() instance.
      558 559 560  | 
    
      # File 'lib/active_support/values/time_zone.rb', line 558 def local_to_utc(time, dst = true) tzinfo.local_to_utc(time, dst) end  | 
  
#match?(re) ⇒ Boolean
Compare #name and TZInfo identifier to a supplied regexp, returning true if a match is found.
      355 356 357 358  | 
    
      # File 'lib/active_support/values/time_zone.rb', line 355 def match?(re) (re == name) || (re == MAPPING[name]) || ((Regexp === re) && (re.match?(name) || re.match?(MAPPING[name]))) end  | 
  
#now ⇒ Object
      523 524 525  | 
    
      # File 'lib/active_support/values/time_zone.rb', line 523 def now time_now.utc.in_time_zone(self) end  | 
  
#parse(str, now = now()) ⇒ Object
Method for creating new ActiveSupport::TimeWithZone instance in time zone of self from parsed string.
Time.zone = 'Hawaii'                   # => "Hawaii"
Time.zone.parse('1999-12-31 14:00:00') # => Fri, 31 Dec 1999 14:00:00 HST -10:00
If upper components are missing from the string, they are supplied from TimeZone#now:
Time.zone.now               # => Fri, 31 Dec 1999 14:00:00 HST -10:00
Time.zone.parse('22:30:00') # => Fri, 31 Dec 1999 22:30:00 HST -10:00
However, if the date component is not provided, but any other upper components are supplied, then the day of the month defaults to 1:
Time.zone.parse('Mar 2000') # => Wed, 01 Mar 2000 00:00:00 HST -10:00
If the string is invalid then an ArgumentError could be raised.
      460 461 462  | 
    
      # File 'lib/active_support/values/time_zone.rb', line 460 def parse(str, now = now()) parts_to_time(Date._parse(str, false), now) end  | 
  
#period_for_local(time, dst = true) ⇒ Object
:nodoc:
      566 567 568  | 
    
      # File 'lib/active_support/values/time_zone.rb', line 566 def period_for_local(time, dst = true) # :nodoc: tzinfo.period_for_local(time, dst) { |periods| periods.last } end  | 
  
#period_for_utc(time) ⇒ Object
:nodoc:
      562 563 564  | 
    
      # File 'lib/active_support/values/time_zone.rb', line 562 def period_for_utc(time) # :nodoc: tzinfo.period_for_utc(time) end  | 
  
#periods_for_local(time) ⇒ Object
:nodoc:
      570 571 572  | 
    
      # File 'lib/active_support/values/time_zone.rb', line 570 def periods_for_local(time) # :nodoc: tzinfo.periods_for_local(time) end  | 
  
#rfc3339(str) ⇒ Object
Method for creating new ActiveSupport::TimeWithZone instance in time zone of self from an RFC 3339 string.
Time.zone = 'Hawaii'                     # => "Hawaii"
Time.zone.rfc3339('2000-01-01T00:00:00Z') # => Fri, 31 Dec 1999 14:00:00 HST -10:00
If the time or zone components are missing then an ArgumentError will be raised. This is much stricter than either parse or iso8601 which allow for missing components.
Time.zone = 'Hawaii'            # => "Hawaii"
Time.zone.rfc3339('1999-12-31') # => ArgumentError: invalid date
  
      476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492  | 
    
      # File 'lib/active_support/values/time_zone.rb', line 476 def rfc3339(str) parts = Date._rfc3339(str) raise ArgumentError, "invalid date" if parts.empty? time = Time.new( parts.fetch(:year), parts.fetch(:mon), parts.fetch(:mday), parts.fetch(:hour), parts.fetch(:min), parts.fetch(:sec) + parts.fetch(:sec_fraction, 0), parts.fetch(:offset) ) TimeWithZone.new(time.utc, self) end  | 
  
#standard_name ⇒ Object
Returns a standard time zone name defined by IANA www.iana.org/time-zones
      319 320 321  | 
    
      # File 'lib/active_support/values/time_zone.rb', line 319 def standard_name MAPPING[name] || name end  | 
  
#strptime(str, format, now = now()) ⇒ Object
Parses str according to format and returns an ActiveSupport::TimeWithZone.
Assumes that str is a time in the time zone self, unless format includes an explicit time zone. (This is the same behavior as parse.) In either case, the returned TimeWithZone has the timezone of self.
Time.zone = 'Hawaii'                   # => "Hawaii"
Time.zone.strptime('1999-12-31 14:00:00', '%Y-%m-%d %H:%M:%S') # => Fri, 31 Dec 1999 14:00:00 HST -10:00
If upper components are missing from the string, they are supplied from TimeZone#now:
Time.zone.now                              # => Fri, 31 Dec 1999 14:00:00 HST -10:00
Time.zone.strptime('22:30:00', '%H:%M:%S') # => Fri, 31 Dec 1999 22:30:00 HST -10:00
However, if the date component is not provided, but any other upper components are supplied, then the day of the month defaults to 1:
Time.zone.strptime('Mar 2000', '%b %Y') # => Wed, 01 Mar 2000 00:00:00 HST -10:00
  
      514 515 516  | 
    
      # File 'lib/active_support/values/time_zone.rb', line 514 def strptime(str, format, now = now()) parts_to_time(DateTime._strptime(str, format), now) end  | 
  
#to_s ⇒ Object
Returns a textual representation of this time zone.
      361 362 363  | 
    
      # File 'lib/active_support/values/time_zone.rb', line 361 def to_s "(GMT#{formatted_offset}) #{name}" end  | 
  
#today ⇒ Object
Returns the current date in this time zone.
      528 529 530  | 
    
      # File 'lib/active_support/values/time_zone.rb', line 528 def today tzinfo.now.to_date end  | 
  
#tomorrow ⇒ Object
Returns the next date in this time zone.
      533 534 535  | 
    
      # File 'lib/active_support/values/time_zone.rb', line 533 def tomorrow today + 1 end  | 
  
#utc_offset ⇒ Object
Returns the offset of this time zone from UTC in seconds.
      324 325 326  | 
    
      # File 'lib/active_support/values/time_zone.rb', line 324 def utc_offset @utc_offset || tzinfo&.current_period&.base_utc_offset end  | 
  
#utc_to_local(time) ⇒ Object
Adjust the given time to the simultaneous time in the time zone represented by self. Returns a local time with the appropriate offset – if you want an ActiveSupport::TimeWithZone instance, use Time#in_time_zone() instead.
As of tzinfo 2, utc_to_local returns a Time with a non-zero utc_offset. See the utc_to_local_returns_utc_offset_times config for more info.
      549 550 551 552 553 554  | 
    
      # File 'lib/active_support/values/time_zone.rb', line 549 def utc_to_local(time) tzinfo.utc_to_local(time).yield_self do |t| ActiveSupport.utc_to_local_returns_utc_offset_times ? t : Time.utc(t.year, t.month, t.day, t.hour, t.min, t.sec, t.sec_fraction * 1_000_000) end end  | 
  
#yesterday ⇒ Object
Returns the previous date in this time zone.
      538 539 540  | 
    
      # File 'lib/active_support/values/time_zone.rb', line 538 def yesterday today - 1 end  |