zones 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (5) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +51 -13
  3. data/lib/zones.rb +11 -9
  4. data/zones.gemspec +1 -1
  5. metadata +3 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 97eeda72622d0c6a5bbd3a63d44c97bae7acebc73d51f686d66b8f34750d71fd
4
- data.tar.gz: 73b2b1a0042828cf4c82bd57efe049b7b8221df1a7676635d66275f4f987f3aa
3
+ metadata.gz: 68effb6f43a7c0bc15f336624569d9f39c549cacd0b4afb319f4f40af29bd35b
4
+ data.tar.gz: 5eaa777bd12704f63a3d76b09dd6957f6e7896213c710377c8acdf7e7499b7bb
5
5
  SHA512:
6
- metadata.gz: ce3ab3febcccb6ca83b314edc650a7361079e264e487342c370149a4e8df90bee6ca915671ed4fcca4238b3ecfc9fa2d99aa8c4033cd5f08c6a6d4c34956a889
7
- data.tar.gz: ff075b5885fd403fd4cef89b224ff692c6c346b5919fcc8735097393ac21bd0cefb437830db8719ac0d5f9ccc9142630762fb6cb7bbee0483f19dd23d46d6a98
6
+ metadata.gz: ef064dda2c373fd9faf62866e381432c76d72ed6735b0c1f1e544f21a8a0c4f7c909c8aabfc2756294e54862408012e63025b24da4d9693344ede3ba8ead648c
7
+ data.tar.gz: e7871c5dac1315da804bccf33c8a42f78196d1a13ff5dfbbca537a7d1cdfc8728f9a4f0126eb07c3a912389ce9bd403b4da5ff1f9c6bda360b04815806110580
data/README.md CHANGED
@@ -5,13 +5,13 @@ A friendly Ruby gem for time parsing and time zone conversion.
5
5
  ## API
6
6
 
7
7
  ```ruby
8
- Time.tz(str, toz=nil, asz=nil) # create a new Time object with a time zone
9
- Time.tz!(str, asz="UTC", toz=nil) # overrides original time zone and swaps params
8
+ Time.to_tz(str, toz=nil, asz=nil) # create a new Time object with a time zone
9
+ Time.as_tz(str, asz="UTC", toz=nil) # overrides original time zone and swaps params
10
10
  Time#to(zone) # converts a time to a new time zone
11
11
  Time#as(zone) # keeps the time, but changes the time zone
12
12
 
13
- String#to_tz # calls Time.tz
14
- String#to_tz! # calls Time.tz!
13
+ String#to_tz # calls Time.to_tz
14
+ String#as_tz # calls Time.as_tz
15
15
  String#to_day # calls Date.to_day
16
16
  String#iso_date # parses and shows ISO date (YYYY-MM-DD)
17
17
  ```
@@ -21,17 +21,55 @@ String#iso_date # parses and shows ISO date (YYYY-MM-DD)
21
21
  Parsing strings:
22
22
 
23
23
  ```ruby
24
- # no argument means to parse the value as is; "!" ignores the time zone and uses UTC
25
- x = "3 August 2013 11:43 +0415".to_tz # 2013-08-03 11:43:00 +0415
26
- y = "3 August 2013 11:43 +0415".to_tz! # 2013-08-03 11:43:00 +0000
24
+ # no argument means to parse the value as is; 'as' ignores the time zone and defaults to UTC
25
+ "3 August 2013 11:43 +0415".to_tz # 2013-08-03 11:43:00 +0415
26
+ "3 August 2013 11:43 +0415".as_tz # 2013-08-03 11:43:00 +0000
27
27
 
28
- # one argument means to convert to that time zone, use "!" to ignore the original offset
29
- x = "3 August 2013 11:43 +0415".to_tz("US/Pacific") # 2013-08-03 00:28:00 -0700
30
- y = "3 August 2013 11:43 +0415".to_tz!("US/Pacific") # 2013-08-03 11:43:00 -0700
28
+ # one argument for `to_tz` means to parse naturally and then convert to that time zone
29
+ "3 August 2013 11:43 +0415".to_tz("US/Pacific") # 2013-08-03 00:28:00 -0700
30
+ "3 August 2013 11:43 +0415".to_tz("America/Caracas") # 2013-08-03 02:58:00 -0430
31
31
 
32
- # use two arguments to indicate source and destination time zones, "!" swaps the order
33
- x = "3 August 2013 11:43 +0415".to_tz("US/Pacific", "America/Caracas") # 2013-08-03 09:13:00 -0700
34
- y = "3 August 2013 11:43 +0415".to_tz!("US/Pacific", "America/Caracas") # 2013-08-03 14:13:00 -0430
32
+ # one argument for `as_tz` means to ignore offset and use the parameter passed in
33
+ "3 August 2013 11:43 +0415".as_tz("US/Pacific") # 2013-08-03 11:43:00 -0700
34
+ "3 August 2013 11:43 +0415".as_tz("America/Caracas") # 2013-08-03 11:43:00 -0430
35
+
36
+ # use two arguments to indicate destination and source time zones, 'as' swaps the order
37
+ "3 August 2013 11:43 +0415".to_tz("US/Pacific", "America/Caracas") # 2013-08-03 09:13:00 -0700
38
+ "3 August 2013 11:43 +0415".as_tz("US/Pacific", "America/Caracas") # 2013-08-03 14:13:00 -0430
39
+
40
+ # the same as above, swapping functions and parameter order gives same results
41
+ "3 August 2013 11:43 +0415".to_tz("America/Caracas", "US/Pacific") # 2013-08-03 14:13:00 -0430
42
+ "3 August 2013 11:43 +0415".as_tz("America/Caracas", "US/Pacific") # 2013-08-03 09:13:00 -0700
43
+ ```
44
+
45
+ Parsing strings using `to_tz`:
46
+
47
+ ```ruby
48
+ # no args means to parse the value as is
49
+ "3 August 2013 11:43 +0415".to_tz # 2013-08-03 11:43:00 +0415
50
+
51
+ # one arg will then convert to that time zone
52
+ "3 August 2013 11:43 +0415".to_tz("US/Pacific") # 2013-08-03 00:28:00 -0700
53
+ "3 August 2013 11:43 +0415".to_tz("America/Caracas") # 2013-08-03 02:58:00 -0430
54
+
55
+ # two args forces the second arg as the initial time zone
56
+ "3 August 2013 11:43 +0415".to_tz("US/Pacific", "America/Caracas") # 2013-08-03 09:13:00 -0700
57
+ "3 August 2013 11:43 +0415".to_tz("America/Caracas", "US/Pacific") # 2013-08-03 14:13:00 -0430
58
+ ```
59
+
60
+ Parsing strings using `as_tz`:
61
+
62
+ ```ruby
63
+ # no args forces the timezone to be UTC
64
+ "3 August 2013 11:43 +0415".as_tz # 2013-08-03 11:43:00 +0000
65
+
66
+ # one arg ignore offset and forces the time zone as the arg
67
+ "3 August 2013 11:43 +0415".as_tz("US/Pacific") # 2013-08-03 11:43:00 -0700
68
+ "3 August 2013 11:43 +0415".as_tz("America/Caracas") # 2013-08-03 11:43:00 -0430
69
+
70
+ # two args forces the second arg as the initial time zone
71
+ "3 August 2013 11:43 +0415".as_tz("US/Pacific", "America/Caracas") # 2013-08-03 14:13:00 -0430
72
+ "3 August 2013 11:43 +0415".as_tz("America/Caracas", "US/Pacific") # 2013-08-03 09:13:00 -0700
35
73
  ```
36
74
 
37
75
  Converting values:
data/lib/zones.rb CHANGED
@@ -81,7 +81,7 @@ class Time
81
81
  :?(\d\d)? # $12: sec
82
82
  \.?(\d+)? # $13: dec
83
83
  \s?(?:(a|p)?m)? # $14: am/pm
84
- \s?(([-+])?(\d\d):?(\d\d)|UTC|GMT)? # $15: offset ($16=sign, $17=hours, $18=mins)
84
+ \s?(([-+])?(\d\d):?(\d\d)|UTC|GMT|Z)? # $15: offset ($16=sign, $17=hours, $18=mins)
85
85
  !iox
86
86
  ymd = $1 ? [ $3.to_i, month_value($2), $1.to_i] : \
87
87
  $4 ? [ $4.to_i, month_value($5), $6.to_i] : \
@@ -94,17 +94,19 @@ class Time
94
94
  [ymd, hms, off]
95
95
  end
96
96
 
97
- def self.tz(str, toz=nil, asz=nil)
97
+ # read values of time in asz, stated, or local timezone, optionally convert to toz timezone
98
+ def self.to_tz(str, toz=nil, asz=nil)
98
99
  ymd, hms, off = parse_str(str)
99
100
  out = Time.new(*ymd, *hms, asz ? TZInfo::Timezone.get(asz) : off)
100
101
  toz ? out.to(toz) : out
101
102
  end
102
103
 
103
- def self.tz!(str, asz="UTC", toz=nil)
104
- tz(str, toz, asz)
104
+ # swap the order of to_tz and default asz to UTC
105
+ def self.as_tz(str, asz="UTC", toz=nil)
106
+ to_tz(str, toz, asz)
105
107
  end
106
108
 
107
- # same time moment, different time zone (ie - change time and zone)
109
+ # same moment in time, different time zone (ie - change time and zone)
108
110
  def to(zone)
109
111
  cfg = TZInfo::Timezone.get(zone)
110
112
  use = cfg.to_local(self)
@@ -112,7 +114,7 @@ class Time
112
114
  Time.new(*ary, cfg)
113
115
  end
114
116
 
115
- # same time values, different time zone (ie - change time zone only)
117
+ # same values of time, different time zone (ie - change time zone only)
116
118
  def as(zone)
117
119
  cfg = TZInfo::Timezone.get(zone)
118
120
  use = self
@@ -131,10 +133,10 @@ class String
131
133
  end
132
134
 
133
135
  def to_tz(*args)
134
- Time.tz(self, *args)
136
+ Time.to_tz(self, *args)
135
137
  end
136
138
 
137
- def to_tz!(*args)
138
- Time.tz!(self, *args)
139
+ def as_tz(*args)
140
+ Time.as_tz(self, *args)
139
141
  end
140
142
  end
data/zones.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "zones"
3
- s.version = "1.0.0"
3
+ s.version = "1.1.0"
4
4
  s.author = "Steve Shreeve"
5
5
  s.email = "steve.shreeve@gmail.com"
6
6
  s.summary =
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zones
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Steve Shreeve
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-06-29 00:00:00.000000000 Z
11
+ date: 2023-07-14 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: A friendly Ruby gem for time parsing and time zone conversion
14
14
  email: steve.shreeve@gmail.com
@@ -40,7 +40,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
40
40
  - !ruby/object:Gem::Version
41
41
  version: '0'
42
42
  requirements: []
43
- rubygems_version: 3.4.14
43
+ rubygems_version: 3.4.16
44
44
  signing_key:
45
45
  specification_version: 4
46
46
  summary: A friendly Ruby gem for time parsing and time zone conversion