tz_offset 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: f9363efb498a8b6180965d24800702afb397ce68
4
+ data.tar.gz: 50c57cf3be860d0f7e8674b7499a8aec964c552f
5
+ SHA512:
6
+ metadata.gz: 31dbb1f263b893d1299772afcaadb0e7e87e90565ff35c91af64482946f81f5737ebef7274520dba33eb601847e7f4274a0bb4088fea979befab07cf5bece8f5
7
+ data.tar.gz: dc8e375a8e93506c02ad56c95d91d365059564add20ab516568c9ef50cdc831a2d31e470b3e2357c77ea6c9c072a3b1e690600ec4432b37dc73cc752446ee7d4
@@ -0,0 +1,2 @@
1
+ --markup=markdown
2
+ --no-private
@@ -0,0 +1,110 @@
1
+ # TZOffset
2
+
3
+ [![Gem Version](https://badge.fury.io/rb/tz_offset.svg)](http://badge.fury.io/rb/tz_offset)
4
+ [![Dependency Status](https://gemnasium.com/molybdenum-99/tz_offset.svg)](https://gemnasium.com/molybdenum-99/tz_offset)
5
+ [![Build Status](https://travis-ci.org/molybdenum-99/tz_offset.svg?branch=master)](https://travis-ci.org/molybdenum-99/tz_offset)
6
+
7
+ Ever tried to convert your distant friend's or colleague's phrase "OK, let's connect tomorrow
8
+ at 6 pm my time (GMT+8)" into easily calculatable Ruby code? E.g. what time it would be in your
9
+ timezone at 18:00 GMT+8? What is your favorite solution? Now it should be that:
10
+
11
+ ```ruby
12
+ TZOffset.parse('GMT+8').local(2016, 10, 20, 18).localtime
13
+ # => 2016-10-20 13:00:00 +0300
14
+
15
+ # or just
16
+ TZOffset.parse('+8').local(2016, 10, 20, 18).localtime
17
+ # => 2016-10-20 13:00:00 +0300
18
+
19
+ # Also works with most common timezone abbreviations
20
+ TZOffset.parse('CEST').local(2016, 10, 20, 18).localtime
21
+ # => 2016-10-20 19:00:00 +0300
22
+ ```
23
+
24
+ In other words, `TZOffset` is simple, no-magic, incapsulated abstraction of "time offset".
25
+
26
+ ## Features and problems
27
+
28
+ * Easy-to-use, intuitive, dead simple, OS independent;
29
+ * No brains included: no huge and comprehensive database of historical times, no automatic
30
+ DST conversion; you just know offset you need, and have it as a near-to-mathematical
31
+ value;
32
+ * Simple value objects, easily converted to/from YAML (so you can save them to databases,
33
+ pass to delayed jobs and so on);
34
+ * Knows about all common timezone abbreviations (got them from
35
+ [Wikipedia list](https://en.wikipedia.org/wiki/List_of_time_zone_abbreviations));
36
+ * For ambiguous abbreviations, just returns list of all of them:
37
+
38
+ ```ruby
39
+ TZOffset.parse('EET')
40
+ # => #<TZOffset +02:00 (EET)>
41
+ TZOffset.parse('CDT')
42
+ # => [#<TZOffset -05:00 (CDT)>, #<TZOffset -04:00 (CDT)>]
43
+ ```
44
+
45
+ * For symbolic timezones, provides a description, if available:
46
+
47
+ ```ruby
48
+ TZOffset.parse('CDT').map(&:description)
49
+ # => ["Central Daylight Time (North America)", "Cuba Daylight Time"]
50
+ TZOffset.parse('CDT').map(&:region)
51
+ # => ["Central", "Cuba"]
52
+
53
+ # NB: Just "Central", "Eastern" and so on is related to North America in timezones nomenclature
54
+ ```
55
+
56
+ * for [DST](https://en.wikipedia.org/wiki/Daylight_saving_time) and non-DST timezones provides
57
+ dst-flag and counterpart timezone, if available:
58
+
59
+ ```ruby
60
+ eet = TZOffset.parse('EET')
61
+ # => #<TZOffset +02:00 (EET)>
62
+ eet.dst?
63
+ # => false
64
+ eet.opposite
65
+ # => #<TZOffset +03:00 (EEST)>
66
+ [eet.description, eet.opposite.description]
67
+ # => ["Eastern European Time", "Eastern European Summer Time"]
68
+ ```
69
+
70
+ ## Installation
71
+
72
+ Do your usual routine with gem named `tz_offset` (e.g. `gem install tz_offset` or add
73
+ `gem "tz_offset` to your `Gemfile`).
74
+
75
+ ## Usage
76
+
77
+ Most of it is already shown above!
78
+
79
+ ```ruby
80
+ require 'tz_offset'
81
+
82
+ off = TZOffset.parse('-02:30')
83
+ # => #<TZOffset -02:30>
84
+ off.now
85
+ # => 2016-10-25 16:07:55 -0230
86
+ off.local(2016, 10, 1)
87
+ # => 2016-10-01 00:00:00 -0230
88
+
89
+ eet = TZOffset.parse('EET')
90
+ # => #<TZOffset +02:00 (EET)>
91
+ eet.now
92
+ # => 2016-10-25 20:29:03 +0200
93
+ eet.description
94
+ # => "Eastern European Time"
95
+ eet.region
96
+ # => "Eastern European"
97
+ eet.opposite
98
+ # => #<TZOffset +03:00 (EEST)>
99
+ eet.opposite.now
100
+ # => 2016-10-25 21:39:26 +0300
101
+ ```
102
+
103
+ ## Author
104
+
105
+ [Victor Shepelev](http://zverok.github.io/) -- extracted from [reality](https://github.com/molybdenum-99/reality)
106
+ project.
107
+
108
+ ## License
109
+
110
+ MIT.
@@ -0,0 +1,176 @@
1
+ require 'time'
2
+
3
+ # Simple class representing timezone offset (in minutes). Knows almost nothing
4
+ # about timezone name, DST or other complications, but useful when ONLY offset is known.
5
+ #
6
+ # Usage:
7
+ #
8
+ # ```ruby
9
+ # o = Reality::TZOffset.parse('UTC+3')
10
+ # # => #<Reality::TZOffset(UTC+03:00)>
11
+ #
12
+ # o.now
13
+ # # => 2016-04-16 19:01:40 +0300
14
+ # o.local(2016, 4, 1, 20, 30)
15
+ # # => 2016-04-01 20:30:00 +0300
16
+ # o.convert(Time.now)
17
+ # # => 2016-04-16 19:02:22 +0300
18
+ # ```
19
+ #
20
+ class TZOffset
21
+ # Number of minutes in offset.
22
+ #
23
+ # @return [Fixnum]
24
+ attr_reader :minutes
25
+
26
+ # Symbolic offset name if available (like "EEST").
27
+ #
28
+ # @note
29
+ # TZOffset never tries to "guess" the name, it is only known if an object was parsed/created
30
+ # from it.
31
+ #
32
+ # @return [String]
33
+ attr_reader :name
34
+
35
+ # Full symbolic timezone description, as per wikipedia (like "Eastern European Summer Time"
36
+ # for "EEST").
37
+ #
38
+ # @return [String]
39
+ attr_reader :description
40
+
41
+ # "Region" part of {#description}, like "Eastern European" for "EEST".
42
+ #
43
+ # @return [String]
44
+ attr_reader :region
45
+
46
+ # @private
47
+ MINUSES = /[−—–]/
48
+
49
+ # Parses TZOffset from string. Understands several options like:
50
+ #
51
+ # * `GMT` (not all TZ names, just well-known
52
+ # [abbreviations](https://en.wikipedia.org/wiki/List_of_time_zone_abbreviations));
53
+ # * `UTC+3` (or `GMT+3`);
54
+ # * `+03:30`;
55
+ # * ..and several combinations.
56
+ #
57
+ # @return [TZOffset]
58
+ def self.parse(text)
59
+ return ABBREV[text.upcase] if ABBREV.key?(text.upcase)
60
+
61
+ text = text.gsub(MINUSES, '-')
62
+ sec = case text
63
+ when /^[A-Z]{3}$/
64
+ Time.zone_offset(text)
65
+ when /^(?:UTC|GMT)?([+-]\d{1,2}:?\d{2})$/
66
+ offset = $1
67
+ Time.zone_offset(offset.sub(/^([+-])(\d):/, '\10\2:'))
68
+ when /^(?:UTC|GMT)?([+-]\d{1,2})/
69
+ $1.to_i * 3600
70
+ end
71
+
72
+ sec && new(sec / 60)
73
+ end
74
+
75
+ # Constructs offset from number of minutes. In most cases, you don't
76
+ # want to use it, but rather {TZOffset.parse}.
77
+ #
78
+ # @param minutes [Fixnum] Number of minutes in offset.
79
+ def initialize(minutes, name: nil, description: nil, region: nil, isdst: nil)
80
+ @minutes = minutes
81
+ @name = name
82
+ @description = description
83
+ @isdst = isdst
84
+ @region = region
85
+ end
86
+
87
+ # @return [String]
88
+ def inspect
89
+ if name
90
+ '#<%s %s%02i:%02i (%s)>' % [self.class.name, sign, *minutes.abs.divmod(60), name]
91
+ else
92
+ '#<%s %s%02i:%02i>' % [self.class.name, sign, *minutes.abs.divmod(60)]
93
+ end
94
+ end
95
+
96
+ # @return [String]
97
+ def to_s
98
+ '%s%02i:%02i' % [sign, *minutes.abs.divmod(60)]
99
+ end
100
+
101
+ # If offset is symbolic (e.g., "EET", not just "+02:00"), returns whether it is daylight
102
+ # saving time offset.
103
+ #
104
+ # See also {#opposite} for obtaining non-DST related to current DST offset and vice versa.
105
+ def dst?
106
+ @isdst
107
+ end
108
+
109
+ # @return [Boolean]
110
+ def <=>(other)
111
+ other.is_a?(TZOffset) or raise ArgumentError, "Can't compare TZOffset with #{other.class}"
112
+ minutes <=> other.minutes
113
+ end
114
+
115
+ include Comparable
116
+
117
+ # @return [Boolean]
118
+ def ==(other)
119
+ other.class == self.class && other.minutes == minutes
120
+ end
121
+
122
+ # Like Ruby's `Time.local`, but in current offset.
123
+ #
124
+ # @return [Time] Constructed time in that offset.
125
+ def local(*values)
126
+ values << 0 until values.count == 6
127
+ mk(*values)
128
+ end
129
+
130
+ # Converts `tm` into current offset.
131
+ #
132
+ # @param tm [Time] Time object to convert (with any offset);
133
+ # @return [Time] Converted object.
134
+ def convert(tm)
135
+ t = tm.getutc + minutes * 60
136
+
137
+ # FIXME: usec are lost
138
+ mk(t.year, t.month, t.day, t.hour, t.min, t.sec)
139
+ end
140
+
141
+ # Like Ruby's `Time.now`, but in current offset.
142
+ #
143
+ # @return [Time] Current time in that offset.
144
+ def now
145
+ convert(Time.now)
146
+ end
147
+
148
+ # For symbolic offsets, returns opposite (DST for non-DST and vice versa) offset object if
149
+ # known, `nil` otherwise.
150
+ #
151
+ # @example
152
+ # eet = TZOffset.parse('EET')
153
+ # # => #<TZOffset +02:00 (EET)>
154
+ # eet.opposite
155
+ # # => #<TZOffset +03:00 (EEST)>
156
+ # TZOffset.parse('+8').opposite
157
+ # # => nil
158
+ #
159
+ # @return [TZOffset]
160
+ def opposite
161
+ return nil unless region
162
+ ABBREV.values.flatten.detect { |tz| tz.region == region && tz.dst? == !dst? }
163
+ end
164
+
165
+ private
166
+
167
+ def sign
168
+ minutes < 0 ? '-' : '+'
169
+ end
170
+
171
+ def mk(*components)
172
+ Time.new(*components, to_s)
173
+ end
174
+ end
175
+
176
+ require_relative 'tz_offset/abbrev'
@@ -0,0 +1,28 @@
1
+ require 'yaml'
2
+
3
+ class TZOffset
4
+ # @private
5
+ PATH = File.expand_path('../data/abbreviations.yaml', __FILE__)
6
+
7
+ # @private
8
+ #
9
+ # List of Timezone abbreviations, loaded from datafile distributed with a gem
10
+ # (abbreviations.yaml) and used when parsing timezones.
11
+ #
12
+ # Rendered really ugly by YARD... So, private.
13
+ ABBREV =
14
+ YAML
15
+ .load_file(PATH)
16
+ .map { |row|
17
+ TZOffset.new(
18
+ row.fetch(:val),
19
+ name: row.fetch(:abbr),
20
+ description: row.fetch(:title),
21
+ region: row.fetch(:region),
22
+ isdst: row.fetch(:dst)
23
+ )
24
+ }
25
+ .group_by(&:name)
26
+ .map { |name, group| [name, group.count == 1 ? group.first : group] }
27
+ .to_h
28
+ end
@@ -0,0 +1,961 @@
1
+ ---
2
+ - :abbr: ACDT
3
+ :title: Australian Central Daylight Savings Time
4
+ :region: Australian Central
5
+ :dst: true
6
+ :val: 630
7
+ - :abbr: ACST
8
+ :title: Australian Central Standard Time
9
+ :region: Australian Central
10
+ :dst: false
11
+ :val: 570
12
+ - :abbr: ACT
13
+ :title: Acre Time
14
+ :region: Acre
15
+ :dst: false
16
+ :val: -300
17
+ - :abbr: ADT
18
+ :title: Atlantic Daylight Time
19
+ :region: Atlantic
20
+ :dst: true
21
+ :val: -180
22
+ - :abbr: AEDT
23
+ :title: Australian Eastern Daylight Savings Time
24
+ :region: Australian Eastern
25
+ :dst: true
26
+ :val: 660
27
+ - :abbr: AEST
28
+ :title: Australian Eastern Standard Time
29
+ :region: Australian Eastern
30
+ :dst: false
31
+ :val: 600
32
+ - :abbr: AFT
33
+ :title: Afghanistan Time
34
+ :region: Afghanistan
35
+ :dst: false
36
+ :val: 270
37
+ - :abbr: AKDT
38
+ :title: Alaska Daylight Time
39
+ :region: Alaska
40
+ :dst: true
41
+ :val: -480
42
+ - :abbr: AKST
43
+ :title: Alaska Standard Time
44
+ :region: Alaska
45
+ :dst: false
46
+ :val: -540
47
+ - :abbr: AMST
48
+ :title: Amazon Summer Time (Brazil)
49
+ :region: Amazon
50
+ :dst: true
51
+ :val: -180
52
+ - :abbr: AMT
53
+ :title: Amazon Time (Brazil)
54
+ :region: Amazon
55
+ :dst: false
56
+ :val: -240
57
+ - :abbr: AMT
58
+ :title: Armenia Time
59
+ :region: Armenia
60
+ :dst: false
61
+ :val: 240
62
+ - :abbr: ART
63
+ :title: Argentina Time
64
+ :region: Argentina
65
+ :dst: false
66
+ :val: -180
67
+ - :abbr: AST
68
+ :title: Arabia Standard Time
69
+ :region: Arabia
70
+ :dst: false
71
+ :val: 180
72
+ - :abbr: AST
73
+ :title: Atlantic Standard Time
74
+ :region: Atlantic
75
+ :dst: false
76
+ :val: -240
77
+ - :abbr: AWST
78
+ :title: Australian Western Standard Time
79
+ :region: Australian Western
80
+ :dst: false
81
+ :val: 480
82
+ - :abbr: AZOST
83
+ :title: Azores Summer Time
84
+ :region: Azores
85
+ :dst: true
86
+ :val: 0
87
+ - :abbr: AZOT
88
+ :title: Azores Standard Time
89
+ :region: Azores
90
+ :dst: false
91
+ :val: -60
92
+ - :abbr: AZT
93
+ :title: Azerbaijan Time
94
+ :region: Azerbaijan
95
+ :dst: false
96
+ :val: 240
97
+ - :abbr: BDT
98
+ :title: Brunei Time
99
+ :region: Brunei
100
+ :dst: false
101
+ :val: 480
102
+ - :abbr: BIOT
103
+ :title: British Indian Ocean Time
104
+ :region: British Indian Ocean
105
+ :dst: false
106
+ :val: 360
107
+ - :abbr: BIT
108
+ :title: Baker Island Time
109
+ :region: Baker Island
110
+ :dst: false
111
+ :val: -720
112
+ - :abbr: BOT
113
+ :title: Bolivia Time
114
+ :region: Bolivia
115
+ :dst: false
116
+ :val: -240
117
+ - :abbr: BRST
118
+ :title: Brasilia Summer Time
119
+ :region: Brasilia
120
+ :dst: true
121
+ :val: -120
122
+ - :abbr: BRT
123
+ :title: Brasilia Time
124
+ :region: Brasilia
125
+ :dst: false
126
+ :val: -180
127
+ - :abbr: BST
128
+ :title: Bangladesh Standard Time
129
+ :region: Bangladesh
130
+ :dst: false
131
+ :val: 360
132
+ - :abbr: BST
133
+ :title: Bougainville Standard Time
134
+ :region: Bougainville
135
+ :dst: false
136
+ :val: 660
137
+ - :abbr: BST
138
+ :title: British Summer Time (British Standard Time from Feb 1968 to Oct 1971)
139
+ :region: British
140
+ :dst: true
141
+ :val: 60
142
+ - :abbr: BTT
143
+ :title: Bhutan Time
144
+ :region: Bhutan
145
+ :dst: false
146
+ :val: 360
147
+ - :abbr: CAT
148
+ :title: Central Africa Time
149
+ :region: Central Africa
150
+ :dst: false
151
+ :val: 120
152
+ - :abbr: CCT
153
+ :title: Cocos Islands Time
154
+ :region: Cocos Islands
155
+ :dst: false
156
+ :val: 390
157
+ - :abbr: CDT
158
+ :title: Central Daylight Time (North America)
159
+ :region: Central
160
+ :dst: true
161
+ :val: -300
162
+ - :abbr: CDT
163
+ :title: Cuba Daylight Time
164
+ :region: Cuba
165
+ :dst: true
166
+ :val: -240
167
+ - :abbr: CEST
168
+ :title: Central European Summer Time (Cf. HAEC)
169
+ :region: Central European
170
+ :dst: true
171
+ :val: 120
172
+ - :abbr: CET
173
+ :title: Central European Time
174
+ :region: Central European
175
+ :dst: false
176
+ :val: 60
177
+ - :abbr: CHADT
178
+ :title: Chatham Daylight Time
179
+ :region: Chatham
180
+ :dst: true
181
+ :val: 825
182
+ - :abbr: CHAST
183
+ :title: Chatham Standard Time
184
+ :region: Chatham
185
+ :dst: false
186
+ :val: 765
187
+ - :abbr: CHOST
188
+ :title: Choibalsan Summer Time
189
+ :region: Choibalsan
190
+ :dst: true
191
+ :val: 540
192
+ - :abbr: CHOT
193
+ :title: Choibalsan Standard Time
194
+ :region: Choibalsan
195
+ :dst: false
196
+ :val: 480
197
+ - :abbr: CHST
198
+ :title: Chamorro Standard Time
199
+ :region: Chamorro
200
+ :dst: false
201
+ :val: 600
202
+ - :abbr: CHUT
203
+ :title: Chuuk Time
204
+ :region: Chuuk
205
+ :dst: false
206
+ :val: 600
207
+ - :abbr: CIST
208
+ :title: Clipperton Island Standard Time
209
+ :region: Clipperton Island
210
+ :dst: false
211
+ :val: -480
212
+ - :abbr: CIT
213
+ :title: Central Indonesia Time
214
+ :region: Central Indonesia
215
+ :dst: false
216
+ :val: 480
217
+ - :abbr: CKT
218
+ :title: Cook Island Time
219
+ :region: Cook Island
220
+ :dst: false
221
+ :val: -600
222
+ - :abbr: CLST
223
+ :title: Chile Summer Time
224
+ :region: Chile
225
+ :dst: true
226
+ :val: -180
227
+ - :abbr: CLT
228
+ :title: Chile Standard Time
229
+ :region: Chile
230
+ :dst: false
231
+ :val: -240
232
+ - :abbr: COST
233
+ :title: Colombia Summer Time
234
+ :region: Colombia
235
+ :dst: true
236
+ :val: -240
237
+ - :abbr: COT
238
+ :title: Colombia Time
239
+ :region: Colombia
240
+ :dst: false
241
+ :val: -300
242
+ - :abbr: CST
243
+ :title: Central Standard Time (North America)
244
+ :region: Central
245
+ :dst: false
246
+ :val: -360
247
+ - :abbr: CST
248
+ :title: China Standard Time
249
+ :region: China
250
+ :dst: false
251
+ :val: 480
252
+ - :abbr: CST
253
+ :title: Cuba Standard Time
254
+ :region: Cuba
255
+ :dst: false
256
+ :val: -300
257
+ - :abbr: CT
258
+ :title: China time
259
+ :region: China
260
+ :dst: false
261
+ :val: 480
262
+ - :abbr: CVT
263
+ :title: Cape Verde Time
264
+ :region: Cape Verde
265
+ :dst: false
266
+ :val: -60
267
+ - :abbr: CXT
268
+ :title: Christmas Island Time
269
+ :region: Christmas Island
270
+ :dst: false
271
+ :val: 420
272
+ - :abbr: DAVT
273
+ :title: Davis Time
274
+ :region: Davis
275
+ :dst: false
276
+ :val: 420
277
+ - :abbr: DDUT
278
+ :title: Dumont d'Urville Time
279
+ :region: Dumont d'Urville
280
+ :dst: false
281
+ :val: 600
282
+ - :abbr: DFT
283
+ :title: AIX specific equivalent of Central European Time
284
+ :region: AIX specific equivalent of Central European
285
+ :dst: false
286
+ :val: 60
287
+ - :abbr: EASST
288
+ :title: Easter Island Summer Time
289
+ :region: Easter Island
290
+ :dst: true
291
+ :val: -300
292
+ - :abbr: EAST
293
+ :title: Easter Island Standard Time
294
+ :region: Easter Island
295
+ :dst: false
296
+ :val: -360
297
+ - :abbr: EAT
298
+ :title: East Africa Time
299
+ :region: East Africa
300
+ :dst: false
301
+ :val: 180
302
+ - :abbr: ECT
303
+ :title: Eastern Caribbean Time (does not recognise DST)
304
+ :region: Eastern Caribbean
305
+ :dst: false
306
+ :val: -240
307
+ - :abbr: ECT
308
+ :title: Ecuador Time
309
+ :region: Ecuador
310
+ :dst: false
311
+ :val: -300
312
+ - :abbr: EDT
313
+ :title: Eastern Daylight Time (North America)
314
+ :region: Eastern
315
+ :dst: true
316
+ :val: -240
317
+ - :abbr: EEST
318
+ :title: Eastern European Summer Time
319
+ :region: Eastern European
320
+ :dst: true
321
+ :val: 180
322
+ - :abbr: EET
323
+ :title: Eastern European Time
324
+ :region: Eastern European
325
+ :dst: false
326
+ :val: 120
327
+ - :abbr: EGST
328
+ :title: Eastern Greenland Summer Time
329
+ :region: Eastern Greenland
330
+ :dst: true
331
+ :val: 0
332
+ - :abbr: EGT
333
+ :title: Eastern Greenland Time
334
+ :region: Eastern Greenland
335
+ :dst: false
336
+ :val: -60
337
+ - :abbr: EIT
338
+ :title: Eastern Indonesian Time
339
+ :region: Eastern Indonesian
340
+ :dst: false
341
+ :val: 540
342
+ - :abbr: EST
343
+ :title: Eastern Standard Time (North America)
344
+ :region: Eastern
345
+ :dst: false
346
+ :val: -300
347
+ - :abbr: FET
348
+ :title: Further-eastern European Time
349
+ :region: Further-eastern European
350
+ :dst: false
351
+ :val: 180
352
+ - :abbr: FJT
353
+ :title: Fiji Time
354
+ :region: Fiji
355
+ :dst: false
356
+ :val: 720
357
+ - :abbr: FKST
358
+ :title: Falkland Islands Summer Time
359
+ :region: Falkland Islands
360
+ :dst: true
361
+ :val: -180
362
+ - :abbr: FKT
363
+ :title: Falkland Islands Time
364
+ :region: Falkland Islands
365
+ :dst: false
366
+ :val: -240
367
+ - :abbr: FNT
368
+ :title: Fernando de Noronha Time
369
+ :region: Fernando de Noronha
370
+ :dst: false
371
+ :val: -120
372
+ - :abbr: GALT
373
+ :title: Galapagos Time
374
+ :region: Galapagos
375
+ :dst: false
376
+ :val: -360
377
+ - :abbr: GAMT
378
+ :title: Gambier Islands Time
379
+ :region: Gambier Islands
380
+ :dst: false
381
+ :val: -540
382
+ - :abbr: GET
383
+ :title: Georgia Standard Time
384
+ :region: Georgia
385
+ :dst: false
386
+ :val: 240
387
+ - :abbr: GFT
388
+ :title: French Guiana Time
389
+ :region: French Guiana
390
+ :dst: false
391
+ :val: -180
392
+ - :abbr: GILT
393
+ :title: Gilbert Island Time
394
+ :region: Gilbert Island
395
+ :dst: false
396
+ :val: 720
397
+ - :abbr: GIT
398
+ :title: Gambier Island Time
399
+ :region: Gambier Island
400
+ :dst: false
401
+ :val: -540
402
+ - :abbr: GMT
403
+ :title: Greenwich Mean Time
404
+ :region: Greenwich Mean
405
+ :dst: false
406
+ :val: 0
407
+ - :abbr: GST
408
+ :title: South Georgia and the South Sandwich Islands Time
409
+ :region: South Georgia and the South Sandwich Islands
410
+ :dst: false
411
+ :val: -120
412
+ - :abbr: GST
413
+ :title: Gulf Standard Time
414
+ :region: Gulf
415
+ :dst: false
416
+ :val: 240
417
+ - :abbr: GYT
418
+ :title: Guyana Time
419
+ :region: Guyana
420
+ :dst: false
421
+ :val: -240
422
+ - :abbr: HADT
423
+ :title: Hawaii-Aleutian Daylight Time
424
+ :region: Hawaii-Aleutian
425
+ :dst: true
426
+ :val: -540
427
+ - :abbr: HAEC
428
+ :title: Heure Avancée d'Europe Centrale francised name for CEST Time
429
+ :region: Heure Avancée d'Europe Centrale francised name for CEST
430
+ :dst: false
431
+ :val: 120
432
+ - :abbr: HAST
433
+ :title: Hawaii-Aleutian Standard Time
434
+ :region: Hawaii-Aleutian
435
+ :dst: false
436
+ :val: -600
437
+ - :abbr: HKT
438
+ :title: Hong Kong Time
439
+ :region: Hong Kong
440
+ :dst: false
441
+ :val: 480
442
+ - :abbr: HMT
443
+ :title: Heard and McDonald Islands Time
444
+ :region: Heard and McDonald Islands
445
+ :dst: false
446
+ :val: 300
447
+ - :abbr: HOVST
448
+ :title: Khovd Summer Time
449
+ :region: Khovd
450
+ :dst: true
451
+ :val: 480
452
+ - :abbr: HOVT
453
+ :title: Khovd Standard Time
454
+ :region: Khovd
455
+ :dst: false
456
+ :val: 420
457
+ - :abbr: ICT
458
+ :title: Indochina Time
459
+ :region: Indochina
460
+ :dst: false
461
+ :val: 420
462
+ - :abbr: IDT
463
+ :title: Israel Daylight Time
464
+ :region: Israel
465
+ :dst: true
466
+ :val: 180
467
+ - :abbr: IOT
468
+ :title: Indian Ocean Time
469
+ :region: Indian Ocean
470
+ :dst: false
471
+ :val: 180
472
+ - :abbr: IRDT
473
+ :title: Iran Daylight Time
474
+ :region: Iran
475
+ :dst: true
476
+ :val: 270
477
+ - :abbr: IRKT
478
+ :title: Irkutsk Time
479
+ :region: Irkutsk
480
+ :dst: false
481
+ :val: 480
482
+ - :abbr: IRST
483
+ :title: Iran Standard Time
484
+ :region: Iran
485
+ :dst: false
486
+ :val: 210
487
+ - :abbr: IST
488
+ :title: Indian Standard Time
489
+ :region: Indian
490
+ :dst: false
491
+ :val: 330
492
+ - :abbr: IST
493
+ :title: Irish Standard Time
494
+ :region: Irish
495
+ :dst: false
496
+ :val: 60
497
+ - :abbr: IST
498
+ :title: Israel Standard Time
499
+ :region: Israel
500
+ :dst: false
501
+ :val: 120
502
+ - :abbr: JST
503
+ :title: Japan Standard Time
504
+ :region: Japan
505
+ :dst: false
506
+ :val: 540
507
+ - :abbr: KGT
508
+ :title: Kyrgyzstan time
509
+ :region: Kyrgyzstan
510
+ :dst: false
511
+ :val: 360
512
+ - :abbr: KOST
513
+ :title: Kosrae Time
514
+ :region: Kosrae
515
+ :dst: false
516
+ :val: 660
517
+ - :abbr: KRAT
518
+ :title: Krasnoyarsk Time
519
+ :region: Krasnoyarsk
520
+ :dst: false
521
+ :val: 420
522
+ - :abbr: KST
523
+ :title: Korea Standard Time
524
+ :region: Korea
525
+ :dst: false
526
+ :val: 540
527
+ - :abbr: LHST
528
+ :title: Lord Howe Standard Time
529
+ :region: Lord Howe
530
+ :dst: false
531
+ :val: 630
532
+ - :abbr: LHST
533
+ :title: Lord Howe Summer Time
534
+ :region: Lord Howe
535
+ :dst: true
536
+ :val: 660
537
+ - :abbr: LINT
538
+ :title: Line Islands Time
539
+ :region: Line Islands
540
+ :dst: false
541
+ :val: 840
542
+ - :abbr: MAGT
543
+ :title: Magadan Time
544
+ :region: Magadan
545
+ :dst: false
546
+ :val: 720
547
+ - :abbr: MART
548
+ :title: Marquesas Islands Time
549
+ :region: Marquesas Islands
550
+ :dst: false
551
+ :val: -570
552
+ - :abbr: MAWT
553
+ :title: Mawson Station Time
554
+ :region: Mawson Station
555
+ :dst: false
556
+ :val: 300
557
+ - :abbr: MDT
558
+ :title: Mountain Daylight Time (North America)
559
+ :region: Mountain
560
+ :dst: true
561
+ :val: -360
562
+ - :abbr: MEST
563
+ :title: Middle European Summer Time
564
+ :region: Middle European
565
+ :dst: true
566
+ :val: 120
567
+ - :abbr: MET
568
+ :title: Middle European Time
569
+ :region: Middle European
570
+ :dst: false
571
+ :val: 60
572
+ - :abbr: MHT
573
+ :title: Marshall Islands Time
574
+ :region: Marshall Islands
575
+ :dst: false
576
+ :val: 720
577
+ - :abbr: MIST
578
+ :title: Macquarie Island Station Time
579
+ :region: Macquarie Island Station
580
+ :dst: false
581
+ :val: 660
582
+ - :abbr: MIT
583
+ :title: Marquesas Islands Time
584
+ :region: Marquesas Islands
585
+ :dst: false
586
+ :val: -570
587
+ - :abbr: MMT
588
+ :title: Myanmar Standard Time
589
+ :region: Myanmar
590
+ :dst: false
591
+ :val: 390
592
+ - :abbr: MSK
593
+ :title: Moscow Time
594
+ :region: Moscow
595
+ :dst: false
596
+ :val: 180
597
+ - :abbr: MST
598
+ :title: Malaysia Standard Time
599
+ :region: Malaysia
600
+ :dst: false
601
+ :val: 480
602
+ - :abbr: MST
603
+ :title: Mountain Standard Time (North America)
604
+ :region: Mountain
605
+ :dst: false
606
+ :val: -420
607
+ - :abbr: MUT
608
+ :title: Mauritius Time
609
+ :region: Mauritius
610
+ :dst: false
611
+ :val: 240
612
+ - :abbr: MVT
613
+ :title: Maldives Time
614
+ :region: Maldives
615
+ :dst: false
616
+ :val: 300
617
+ - :abbr: MYT
618
+ :title: Malaysia Time
619
+ :region: Malaysia
620
+ :dst: false
621
+ :val: 480
622
+ - :abbr: NCT
623
+ :title: New Caledonia Time
624
+ :region: New Caledonia
625
+ :dst: false
626
+ :val: 660
627
+ - :abbr: NDT
628
+ :title: Newfoundland Daylight Time
629
+ :region: Newfoundland
630
+ :dst: true
631
+ :val: -150
632
+ - :abbr: NFT
633
+ :title: Norfolk Time
634
+ :region: Norfolk
635
+ :dst: false
636
+ :val: 660
637
+ - :abbr: NPT
638
+ :title: Nepal Time
639
+ :region: Nepal
640
+ :dst: false
641
+ :val: 345
642
+ - :abbr: NST
643
+ :title: Newfoundland Standard Time
644
+ :region: Newfoundland
645
+ :dst: false
646
+ :val: -210
647
+ - :abbr: NT
648
+ :title: Newfoundland Time
649
+ :region: Newfoundland
650
+ :dst: false
651
+ :val: -210
652
+ - :abbr: NUT
653
+ :title: Niue Time
654
+ :region: Niue
655
+ :dst: false
656
+ :val: -660
657
+ - :abbr: NZDT
658
+ :title: New Zealand Daylight Time
659
+ :region: New Zealand
660
+ :dst: true
661
+ :val: 780
662
+ - :abbr: NZST
663
+ :title: New Zealand Standard Time
664
+ :region: New Zealand
665
+ :dst: false
666
+ :val: 720
667
+ - :abbr: OMST
668
+ :title: Omsk Time
669
+ :region: Omsk
670
+ :dst: false
671
+ :val: 360
672
+ - :abbr: ORAT
673
+ :title: Oral Time
674
+ :region: Oral
675
+ :dst: false
676
+ :val: 300
677
+ - :abbr: PDT
678
+ :title: Pacific Daylight Time (North America)
679
+ :region: Pacific
680
+ :dst: true
681
+ :val: -420
682
+ - :abbr: PET
683
+ :title: Peru Time
684
+ :region: Peru
685
+ :dst: false
686
+ :val: -300
687
+ - :abbr: PETT
688
+ :title: Kamchatka Time
689
+ :region: Kamchatka
690
+ :dst: false
691
+ :val: 720
692
+ - :abbr: PGT
693
+ :title: Papua New Guinea Time
694
+ :region: Papua New Guinea
695
+ :dst: false
696
+ :val: 600
697
+ - :abbr: PHOT
698
+ :title: Phoenix Island Time
699
+ :region: Phoenix Island
700
+ :dst: false
701
+ :val: 780
702
+ - :abbr: PKT
703
+ :title: Pakistan Standard Time
704
+ :region: Pakistan
705
+ :dst: false
706
+ :val: 300
707
+ - :abbr: PMDT
708
+ :title: Saint Pierre and Miquelon Daylight time
709
+ :region: Saint Pierre and Miquelon
710
+ :dst: true
711
+ :val: -120
712
+ - :abbr: PMST
713
+ :title: Saint Pierre and Miquelon Standard Time
714
+ :region: Saint Pierre and Miquelon
715
+ :dst: false
716
+ :val: -180
717
+ - :abbr: PONT
718
+ :title: Pohnpei Standard Time
719
+ :region: Pohnpei
720
+ :dst: false
721
+ :val: 660
722
+ - :abbr: PST
723
+ :title: Pacific Standard Time (North America)
724
+ :region: Pacific
725
+ :dst: false
726
+ :val: -480
727
+ - :abbr: PST
728
+ :title: Philippine Standard Time
729
+ :region: Philippine
730
+ :dst: false
731
+ :val: 480
732
+ - :abbr: PYST
733
+ :title: Paraguay Summer Time (South America)
734
+ :region: Paraguay
735
+ :dst: true
736
+ :val: -180
737
+ - :abbr: PYT
738
+ :title: Paraguay Time (South America)
739
+ :region: Paraguay
740
+ :dst: false
741
+ :val: -240
742
+ - :abbr: RET
743
+ :title: Réunion Time
744
+ :region: Réunion
745
+ :dst: false
746
+ :val: 240
747
+ - :abbr: ROTT
748
+ :title: Rothera Research Station Time
749
+ :region: Rothera Research Station
750
+ :dst: false
751
+ :val: -180
752
+ - :abbr: SAKT
753
+ :title: Sakhalin Island time
754
+ :region: Sakhalin Island
755
+ :dst: false
756
+ :val: 660
757
+ - :abbr: SAMT
758
+ :title: Samara Time
759
+ :region: Samara
760
+ :dst: false
761
+ :val: 240
762
+ - :abbr: SAST
763
+ :title: South African Standard Time
764
+ :region: South African
765
+ :dst: false
766
+ :val: 120
767
+ - :abbr: SBT
768
+ :title: Solomon Islands Time
769
+ :region: Solomon Islands
770
+ :dst: false
771
+ :val: 660
772
+ - :abbr: SCT
773
+ :title: Seychelles Time
774
+ :region: Seychelles
775
+ :dst: false
776
+ :val: 240
777
+ - :abbr: SGT
778
+ :title: Singapore Time
779
+ :region: Singapore
780
+ :dst: false
781
+ :val: 480
782
+ - :abbr: SLST
783
+ :title: Sri Lanka Standard Time
784
+ :region: Sri Lanka
785
+ :dst: false
786
+ :val: 330
787
+ - :abbr: SRET
788
+ :title: Srednekolymsk Time
789
+ :region: Srednekolymsk
790
+ :dst: false
791
+ :val: 660
792
+ - :abbr: SRT
793
+ :title: Suriname Time
794
+ :region: Suriname
795
+ :dst: false
796
+ :val: -180
797
+ - :abbr: SST
798
+ :title: Samoa Standard Time
799
+ :region: Samoa
800
+ :dst: false
801
+ :val: -660
802
+ - :abbr: SST
803
+ :title: Singapore Standard Time
804
+ :region: Singapore
805
+ :dst: false
806
+ :val: 480
807
+ - :abbr: SYOT
808
+ :title: Showa Station Time
809
+ :region: Showa Station
810
+ :dst: false
811
+ :val: 180
812
+ - :abbr: TAHT
813
+ :title: Tahiti Time
814
+ :region: Tahiti
815
+ :dst: false
816
+ :val: -600
817
+ - :abbr: TFT
818
+ :title: Indian/Kerguelen Time
819
+ :region: Indian/Kerguelen
820
+ :dst: false
821
+ :val: 300
822
+ - :abbr: THA
823
+ :title: Thailand Standard Time
824
+ :region: Thailand
825
+ :dst: false
826
+ :val: 420
827
+ - :abbr: TJT
828
+ :title: Tajikistan Time
829
+ :region: Tajikistan
830
+ :dst: false
831
+ :val: 300
832
+ - :abbr: TKT
833
+ :title: Tokelau Time
834
+ :region: Tokelau
835
+ :dst: false
836
+ :val: 780
837
+ - :abbr: TLT
838
+ :title: Timor Leste Time
839
+ :region: Timor Leste
840
+ :dst: false
841
+ :val: 540
842
+ - :abbr: TMT
843
+ :title: Turkmenistan Time
844
+ :region: Turkmenistan
845
+ :dst: false
846
+ :val: 300
847
+ - :abbr: TOT
848
+ :title: Tonga Time
849
+ :region: Tonga
850
+ :dst: false
851
+ :val: 780
852
+ - :abbr: TRT
853
+ :title: Turkey Time
854
+ :region: Turkey
855
+ :dst: false
856
+ :val: 180
857
+ - :abbr: TVT
858
+ :title: Tuvalu Time
859
+ :region: Tuvalu
860
+ :dst: false
861
+ :val: 720
862
+ - :abbr: ULAST
863
+ :title: Ulaanbaatar Summer Time
864
+ :region: Ulaanbaatar
865
+ :dst: true
866
+ :val: 540
867
+ - :abbr: ULAT
868
+ :title: Ulaanbaatar Standard Time
869
+ :region: Ulaanbaatar
870
+ :dst: false
871
+ :val: 480
872
+ - :abbr: USZ1
873
+ :title: Kaliningrad Time
874
+ :region: Kaliningrad
875
+ :dst: false
876
+ :val: 120
877
+ - :abbr: UYST
878
+ :title: Uruguay Summer Time
879
+ :region: Uruguay
880
+ :dst: true
881
+ :val: -120
882
+ - :abbr: UYT
883
+ :title: Uruguay Standard Time
884
+ :region: Uruguay
885
+ :dst: false
886
+ :val: -180
887
+ - :abbr: UZT
888
+ :title: Uzbekistan Time
889
+ :region: Uzbekistan
890
+ :dst: false
891
+ :val: 300
892
+ - :abbr: VET
893
+ :title: Venezuelan Standard Time
894
+ :region: Venezuelan
895
+ :dst: false
896
+ :val: -240
897
+ - :abbr: VLAT
898
+ :title: Vladivostok Time
899
+ :region: Vladivostok
900
+ :dst: false
901
+ :val: 600
902
+ - :abbr: VOLT
903
+ :title: Volgograd Time
904
+ :region: Volgograd
905
+ :dst: false
906
+ :val: 240
907
+ - :abbr: VOST
908
+ :title: Vostok Station Time
909
+ :region: Vostok Station
910
+ :dst: false
911
+ :val: 360
912
+ - :abbr: VUT
913
+ :title: Vanuatu Time
914
+ :region: Vanuatu
915
+ :dst: false
916
+ :val: 660
917
+ - :abbr: WAKT
918
+ :title: Wake Island Time
919
+ :region: Wake Island
920
+ :dst: false
921
+ :val: 720
922
+ - :abbr: WAST
923
+ :title: West Africa Summer Time
924
+ :region: West Africa
925
+ :dst: true
926
+ :val: 120
927
+ - :abbr: WAT
928
+ :title: West Africa Time
929
+ :region: West Africa
930
+ :dst: false
931
+ :val: 60
932
+ - :abbr: WEST
933
+ :title: Western European Summer Time
934
+ :region: Western European
935
+ :dst: true
936
+ :val: 60
937
+ - :abbr: WET
938
+ :title: Western European Time
939
+ :region: Western European
940
+ :dst: false
941
+ :val: 0
942
+ - :abbr: WIT
943
+ :title: Western Indonesian Time
944
+ :region: Western Indonesian
945
+ :dst: false
946
+ :val: 420
947
+ - :abbr: WST
948
+ :title: Western Standard Time
949
+ :region: Western
950
+ :dst: false
951
+ :val: 480
952
+ - :abbr: YAKT
953
+ :title: Yakutsk Time
954
+ :region: Yakutsk
955
+ :dst: false
956
+ :val: 540
957
+ - :abbr: YEKT
958
+ :title: Yekaterinburg Time
959
+ :region: Yekaterinburg
960
+ :dst: false
961
+ :val: 300