Module: TimezoneParser

Defined in:
lib/timezone_parser.rb,
lib/timezone_parser/data.rb,
lib/timezone_parser/version.rb,
lib/timezone_parser/timezone.rb,
lib/timezone_parser/data/cldr.rb,
lib/timezone_parser/zone_info.rb,
lib/timezone_parser/rails_zone.rb,
lib/timezone_parser/data/tzinfo.rb,
lib/timezone_parser/abbreviation.rb,
lib/timezone_parser/data/storage.rb,
lib/timezone_parser/data/windows.rb,
lib/timezone_parser/windows_zone.rb,
lib/timezone_parser/data/exporter.rb

Overview

TimezoneParser module

Defined Under Namespace

Modules: CLDR, TZInfo, Windows Classes: Abbreviation, Data, RailsZone, Timezone, WindowsZone, ZoneInfo

Constant Summary collapse

AllModules =

Modules which to use by default when no modules are specified

[:Abbreviations, :Timezones, :WindowsZones, :RailsZones].freeze
VERSION =

Version

'1.0.0'

Class Method Summary collapse

Class Method Details

.getOffsets(name, toTime = nil, fromTime = nil, regions = @@Regions, locales = @@Locales, type = nil, all = true, modules = @@Modules) ⇒ Array<Fixnum>

Get UTC offsets in seconds for given Timezone name

Parameters:

  • name (String)

    either Timezone name or abbreviation

  • toTime (DateTime) (defaults to: nil)

    look for offsets which came into effect before this date, exclusive

  • fromTime (DateTime) (defaults to: nil)

    look for offsets which came into effect at this date, inclusive

  • regions (Array<String>) (defaults to: @@Regions)

    look for offsets only for these regions

  • locales (Array<String>) (defaults to: @@Locales)

    search Timezone name only for these locales

  • type (Symbol) (defaults to: nil)

    specify whether offset should be :standard time or :daylight

  • all (Boolean) (defaults to: true)

    specify whether should search for all offsets or return as soon as found any

  • modules (Array<Symbol>) (defaults to: @@Modules)

    list of modules from which to search

Returns:

  • (Array<Fixnum>)

    list of timezone offsets in seconds

See Also:



98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
# File 'lib/timezone_parser.rb', line 98

def self.getOffsets(name, toTime = nil, fromTime = nil, regions = @@Regions, locales = @@Locales, type = nil, all = true, modules = @@Modules)
    offsets = SortedSet.new
    modules = AllModules if modules.nil? or modules.empty?
    offsets += Abbreviation::getOffsets(name, toTime, fromTime, regions, type) if modules.include?(:Abbreviations)
    return offsets.to_a if not all and not offsets.empty?

    offsets += Timezone::getOffsets(name, toTime, fromTime, locales, regions) if modules.include?(:Timezones)
    return offsets.to_a if not all and not offsets.empty?

    offsets += WindowsZone::getOffsets(name, locales) if modules.include?(:WindowsZones)
    return offsets.to_a if not all and not offsets.empty?

    offsets += RailsZone::getOffsets(name, toTime, fromTime, locales) if modules.include?(:RailsZones)
    offsets.to_a
end

.getTimezones(name, toTime = nil, fromTime = nil, regions = @@Regions, locales = @@Locales, type = nil, all = true, modules = @@Modules) ⇒ Array<String>

Get Timezone identifiers for given Timezone name

Parameters:

  • name (String)

    either Timezone name or abbreviation

  • toTime (DateTime) (defaults to: nil)

    look for timezones which came into effect before this date, exclusive

  • fromTime (DateTime) (defaults to: nil)

    look for timezones which came into effect at this date, inclusive

  • regions (Array<String>) (defaults to: @@Regions)

    look for timezones only for these regions

  • locales (Array<String>) (defaults to: @@Locales)

    search Timezone name only for these locales

  • type (Symbol) (defaults to: nil)

    specify whether timezones should be :standard time or :daylight

  • all (Boolean) (defaults to: true)

    specify whether should search for all timezones or return as soon as found any

  • modules (Array<Symbol>) (defaults to: @@Modules)

    list of modules from which to search

Returns:

  • (Array<String>)

    list of timezone identifiers

See Also:



132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
# File 'lib/timezone_parser.rb', line 132

def self.getTimezones(name, toTime = nil, fromTime = nil, regions = @@Regions, locales = @@Locales, type = nil, all = true, modules = @@Modules)
    timezones = SortedSet.new
    modules = AllModules if modules.nil? or modules.empty?
    timezones += Abbreviation::getTimezones(name, toTime, fromTime, regions, type) if modules.include?(:Abbreviations)
    return timezones.to_a if not all and not timezones.empty?

    timezones += Timezone::getTimezones(name, toTime, fromTime, locales, regions) if modules.include?(:Timezones)
    return timezones.to_a if not all and not timezones.empty?

    timezones += WindowsZone::getTimezones(name, locales, regions) if modules.include?(:WindowsZones)
    return timezones.to_a if not all and not timezones.empty?

    timezones += RailsZone::getTimezones(name, locales) if modules.include?(:RailsZones)
    timezones.to_a
end

.isValid?(name, locales = @@Locales, modules = @@Modules) ⇒ Boolean

Check if given Timezone name is a valid timezone

Parameters:

  • name (String)

    either Timezone name or abbreviation

  • locales (Array<String>) (defaults to: @@Locales)

    check only for these locales

  • modules (Array<Symbol>) (defaults to: @@Modules)

    list of modules from which to check

Returns:

  • (Boolean)

    whether Timezone is valid

See Also:



64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/timezone_parser.rb', line 64

def self.isValid?(name, locales = @@Locales, modules = @@Modules)
    valid = false
    modules = AllModules if modules.nil? or modules.empty?
    valid = Abbreviation::isValid?(name) if modules.include?(:Abbreviations)
    return valid if valid

    valid = Timezone::isValid?(name, locales) if modules.include?(:Timezones)
    return valid if valid

    valid = WindowsZone::isValid?(name, locales) if modules.include?(:WindowsZones)
    return valid if valid

    valid = RailsZone::isValid?(name, locales) if modules.include?(:RailsZones)
    valid
end

.LocalesArray<String>

Locales which will be used for TimezoneParser methods if not specified there

Each locale is language identifier based on IETF BCP 47. Usually is either language identifier or language and country/region identifier



48
49
50
# File 'lib/timezone_parser.rb', line 48

def self.Locales
    @@Locales
end

.ModulesArray<Symbol>

Modules which will be used for TimezoneParser methods if not specified there

Returns:

  • (Array<Symbol>)

    list containing symbol names for modules to use

See Also:



26
27
28
# File 'lib/timezone_parser.rb', line 26

def self.Modules
    @@Modules
end

.RegionsArray<String>

Regions which will be used for TimezoneParser methods if not specified there

Each region is either ISO 3166-1 alpha-2 code or CLDR territory (UN M.49)



36
37
38
# File 'lib/timezone_parser.rb', line 36

def self.Regions
    @@Regions
end