Class: TimezoneParser::Timezone

Inherits:
ZoneInfo
  • Object
show all
Defined in:
lib/timezone_parser/timezone.rb

Overview

Timezone

Instance Attribute Summary collapse

Attributes inherited from ZoneInfo

#FromTime, #ToTime

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from ZoneInfo

#getMetazones, #getTimezones, #getTypes, #setTime

Constructor Details

#initialize(timezone) ⇒ Timezone

Timezone instance

Parameters:

  • timezone (String)

    Timezone name



38
39
40
41
42
43
44
# File 'lib/timezone_parser/timezone.rb', line 38

def initialize(timezone)
    @Timezone = timezone
    @Data = Data.new
    @Valid = nil
    setTime
    set(@@Locales.dup, @@Regions.dup, true)
end

Instance Attribute Details

#AllObject

Returns the value of attribute All.



34
35
36
# File 'lib/timezone_parser/timezone.rb', line 34

def All
  @All
end

#LocalesObject

Returns the value of attribute Locales.



32
33
34
# File 'lib/timezone_parser/timezone.rb', line 32

def Locales
  @Locales
end

#RegionsObject

Returns the value of attribute Regions.



33
34
35
# File 'lib/timezone_parser/timezone.rb', line 33

def Regions
  @Regions
end

Class Method Details

.getMetazones(timezone, toTime = nil, fromTime = nil, locales = nil, regions = nil, all = true) ⇒ Array<String>

Get Metazone identifiers for given Timezone name

Parameters:

  • timezone (String)

    Timezone name

  • 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

  • locales (Array<String>) (defaults to: nil)

    search Timezone name only for these locales

  • regions (Array<String>) (defaults to: nil)

    look for timezones only for these regions

  • all (Boolean) (defaults to: true)

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

Returns:

  • (Array<String>)

    list of metazone identifiers

See Also:



155
156
157
# File 'lib/timezone_parser/timezone.rb', line 155

def self.getMetazones(timezone, toTime = nil, fromTime = nil, locales = nil, regions = nil, all = true)
    self.new(timezone).setTime(toTime, fromTime).set(locales, regions, all).getMetazones
end

.getOffsets(timezone, toTime = nil, fromTime = nil, locales = nil, regions = nil, all = true) ⇒ Array<Fixnum>

Get UTC offsets in seconds for given Timezone name

Parameters:

  • timezone (String)

    Timezone name

  • 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

  • locales (Array<String>) (defaults to: nil)

    search Timezone name only for these locales

  • regions (Array<String>) (defaults to: nil)

    look for offsets only for these regions

  • all (Boolean) (defaults to: true)

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

Returns:

  • (Array<Fixnum>)

    list of timezone offsets in seconds

See Also:



127
128
129
# File 'lib/timezone_parser/timezone.rb', line 127

def self.getOffsets(timezone, toTime = nil, fromTime = nil, locales = nil, regions = nil, all = true)
    self.new(timezone).setTime(toTime, fromTime).set(locales, regions, all).getOffsets
end

.getTimezones(timezone, toTime = nil, fromTime = nil, locales = nil, regions = nil, all = true) ⇒ Array<String>

Get Timezone identifiers for given Timezone name

Parameters:

  • timezone (String)

    Timezone name

  • 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

  • locales (Array<String>) (defaults to: nil)

    search Timezone name only for these locales

  • regions (Array<String>) (defaults to: nil)

    look for timezones only for these regions

  • all (Boolean) (defaults to: true)

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

Returns:

  • (Array<String>)

    list of timezone identifiers

See Also:



141
142
143
# File 'lib/timezone_parser/timezone.rb', line 141

def self.getTimezones(timezone, toTime = nil, fromTime = nil, locales = nil, regions = nil, all = true)
    self.new(timezone).setTime(toTime, fromTime).set(locales, regions, all).getTimezones
end

.isValid?(timezone, locales = nil) ⇒ Boolean

Check if given Timezone name is a valid timezone

Parameters:

  • timezone (String)

    Timezone name

  • locales (Array<String>) (defaults to: nil)

    search Timezone name only for these locales

Returns:

  • (Boolean)

    whether Timezone is valid

See Also:



113
114
115
# File 'lib/timezone_parser/timezone.rb', line 113

def self.isValid?(timezone, locales = nil)
    self.new(timezone).set(locales).isValid?
end

.LocalesArray<String>

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

Each locale is language identifier based on IETF BCP 47



19
20
21
# File 'lib/timezone_parser/timezone.rb', line 19

def self.Locales
    @@Locales
end

.RegionsArray<String>

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

Each region is CLDR territory (UN M.49)

Returns:

  • (Array<String>)

    list containing region identifiers

See Also:



28
29
30
# File 'lib/timezone_parser/timezone.rb', line 28

def self.Regions
    @@Regions
end

Instance Method Details

#getDataData

Abbreviation data

Returns:



77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
# File 'lib/timezone_parser/timezone.rb', line 77

def getData
    unless @Loaded
        @Loaded = true
        @Valid = false
        locales = @Locales
        locales = Data::Storage.Timezones.keys if locales.empty?
        locales.each do |locale|
            next unless Data::Storage.Timezones.has_key?(locale)
            entry = Data::Storage.Timezones[locale][@Timezone]
            if entry
                @Data.processEntry(entry, @ToTime, @FromTime, @Regions)
                @Valid = true
                return @Data unless @All
            end
        end
    end
    @Data
end

#getOffsetsArray<Fixnum>

Get UTC offsets in seconds

Returns:

  • (Array<Fixnum>)

    list of timezone offsets in seconds



98
99
100
101
102
103
104
105
106
# File 'lib/timezone_parser/timezone.rb', line 98

def getOffsets
    if not @Offsets and not getTimezones.empty?
        types = [@Type] if @Type
        @Offsets = @Data.findOffsets(@ToTime, @FromTime, @Regions, types).to_a
    else
        super
    end
    @Offsets
end

#isValid?Boolean

Check if timezone is valid

Returns:

  • (Boolean)

    whether timezone is valid



60
61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/timezone_parser/timezone.rb', line 60

def isValid?
    if @Valid.nil?
        locales = @Locales
        locales = Data::Storage.Timezones.keys if locales.empty?
        locales.each do |locale|
            next unless Data::Storage.Timezones.has_key?(locale)
            if Data::Storage.Timezones[locale].has_key?(@Timezone)
                @Valid = true
                return @Valid
            end
        end
    end
    @Valid = false
end

#set(locales = nil, regions = nil, all = true) ⇒ Timezone

Set locales, regions and all

Parameters:

  • locales (Array<String>) (defaults to: nil)

    search only in these locales

  • regions (Array<String>) (defaults to: nil)

    filter for these regions

  • all (Boolean) (defaults to: true)

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

Returns:



51
52
53
54
55
56
# File 'lib/timezone_parser/timezone.rb', line 51

def set(locales = nil, regions = nil, all = true)
    @Locales = locales unless locales.nil?
    @Regions = regions unless regions.nil?
    @All = all ? true : false
    self
end