timezone 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,3 +1,3 @@
1
1
  module Timezone
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
@@ -2,11 +2,12 @@ require 'json'
2
2
  require 'date'
3
3
  require 'time'
4
4
  require 'net/http'
5
- require 'timezone/error'
6
- require 'timezone/configure'
5
+ require File.expand_path(File.dirname(__FILE__) + '/error')
6
+ require File.expand_path(File.dirname(__FILE__) + '/configure')
7
7
 
8
8
  module Timezone
9
9
  class Zone
10
+ include Comparable
10
11
  attr_accessor :rules, :zone
11
12
 
12
13
  # Create a new Timezone object.
@@ -51,7 +52,18 @@ module Timezone
51
52
  rule = rules.detect{ |rule| _parsetime(rule['_from']) <= reference && _parsetime(rule['_to']) >= reference }
52
53
  reference + rule['offset']
53
54
  end
54
-
55
+
56
+ # Get the current UTC offset in seconds for this timezone.
57
+ #
58
+ # timezone.utc_offset
59
+ def utc_offset
60
+ @rules.last['offset']-(@rules.last['dst'] ? 3600 : 0)
61
+ end
62
+
63
+ def <=> zone #:nodoc:
64
+ utc_offset <=> zone.utc_offset
65
+ end
66
+
55
67
  private
56
68
 
57
69
  def timezone_id lat, lon #:nodoc:
@@ -1,7 +1,5 @@
1
1
  require File.expand_path(File.dirname(__FILE__) + '/../lib/timezone')
2
2
  require File.expand_path(File.dirname(__FILE__) + '/../lib/timezone/zone')
3
- require File.expand_path(File.dirname(__FILE__) + '/../lib/timezone/error')
4
- require File.expand_path(File.dirname(__FILE__) + '/../lib/timezone/configure')
5
3
  require 'test/unit'
6
4
 
7
5
  class TimezoneTest < Test::Unit::TestCase
@@ -24,6 +22,20 @@ class TimezoneTest < Test::Unit::TestCase
24
22
  end
25
23
  end
26
24
 
25
+ def time_timezone_equivalence
26
+ gmt = Timezone::Zone.new :zone => 'GMT'
27
+ australia = Timezone::Zone.new :zone => 'Australia/Sydney'
28
+ assert gmt == gmt
29
+ assert gmt <= australia
30
+ assert gmt < australia
31
+ end
32
+
33
+ def test_getting_utc_offset
34
+ assert_equal 36000, Timezone::Zone.new(:zone => 'Australia/Sydney').utc_offset
35
+ assert_equal -28800, Timezone::Zone.new(:zone => 'America/Los_Angeles').utc_offset
36
+ assert_equal 20700, Timezone::Zone.new(:zone => 'Asia/Kathmandu').utc_offset
37
+ end
38
+
27
39
  def test_loading_GMT_timezone
28
40
  timezone = Timezone::Zone.new :zone => 'GMT'
29
41
  assert_equal Time.now.utc.to_i, timezone.time(Time.now).to_i
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: timezone
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.1.0
5
+ version: 0.1.1
6
6
  platform: ruby
7
7
  authors:
8
8
  - Pan Thomakos
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-02-12 00:00:00 -08:00
13
+ date: 2011-02-22 00:00:00 -08:00
14
14
  default_executable:
15
15
  dependencies: []
16
16
 
@@ -520,9 +520,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
520
520
  requirements: []
521
521
 
522
522
  rubyforge_project: timezone
523
- rubygems_version: 1.5.0
523
+ rubygems_version: 1.5.2
524
524
  signing_key:
525
525
  specification_version: 3
526
- summary: timezone-0.1.0
526
+ summary: timezone-0.1.1
527
527
  test_files:
528
528
  - test/timezone_test.rb