w3c_datetime 0.0.3 → 0.0.4
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.
- data/lib/time.rb +5 -0
- data/lib/w3c_datetime.rb +2 -14
- data/lib/w3c_datetime/w3c_datetime.rb +40 -0
- metadata +5 -2
data/lib/time.rb
ADDED
data/lib/w3c_datetime.rb
CHANGED
@@ -1,14 +1,2 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
date_regexp = /(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})(?:T(?<hour>\d{2}):(?<minute>\d{2}):?(?<second>\d{2})?\.?(?<milisecond>\d{1,2})?(?<timezone>.+)?)?/
|
4
|
-
parsed = date_regexp.match(date_str)
|
5
|
-
begin
|
6
|
-
Time.new(parsed[:year].to_i, parsed[:month].to_i, parsed[:day].to_i, parsed[:hour].to_i, parsed[:minute].to_i, parsed[:second].to_i, self.get_timezone(parsed[:timezone])) unless parsed.nil?
|
7
|
-
rescue ArgumentError, TypeError
|
8
|
-
end
|
9
|
-
end
|
10
|
-
|
11
|
-
def self.get_timezone(timezone)
|
12
|
-
timezone || "+00:00"
|
13
|
-
end
|
14
|
-
end
|
1
|
+
require File.dirname(__FILE__) + '/w3c_datetime/w3c_datetime'
|
2
|
+
require File.dirname(__FILE__) + '/time'
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# Handle W3 Date and Time formats
|
2
|
+
#
|
3
|
+
# Handle W3 Date and Time formats as specified in http://www.w3.org/TR/NOTE-datetime
|
4
|
+
#
|
5
|
+
# @see http://www.w3.org/TR/NOTE-datetime
|
6
|
+
#
|
7
|
+
# @example
|
8
|
+
# W3cDateTime::parse('2013-02-10')
|
9
|
+
# W3cDateTime::parse('2013-02-10T10:10Z')
|
10
|
+
# W3cDateTime::parse('2013-02-10T10:10:20+10:00')
|
11
|
+
#
|
12
|
+
# @author Michal Pawlowski <misza222@gmail.com>
|
13
|
+
class W3cDatetime
|
14
|
+
|
15
|
+
# Parse date string in http://www.w3.org/TR/NOTE-datetime format
|
16
|
+
#
|
17
|
+
# @param [String] date_str date represented as string in http://www.w3.org/TR/NOTE-datetime format
|
18
|
+
# @return [Time] Time object
|
19
|
+
def self.parse(date_str)
|
20
|
+
date_regexp = /^(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})(?:T(?<hour>\d{2}):(?<minute>\d{2}):?(?<second>\d{2})?\.?(?<milisecond>\d{1,2})?(?:(?<timezone>.+)|Z)?)?$/
|
21
|
+
parsed = date_regexp.match(date_str)
|
22
|
+
begin
|
23
|
+
Time.new(parsed[:year].to_i, parsed[:month].to_i, parsed[:day].to_i, parsed[:hour].to_i, parsed[:minute].to_i, parsed[:second].to_i, get_timezone(parsed[:timezone])) unless parsed.nil?
|
24
|
+
rescue ArgumentError, TypeError
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
class << self
|
29
|
+
private
|
30
|
+
def get_timezone(timezone)
|
31
|
+
if timezone == 'Z'
|
32
|
+
timezone = '+00:00'
|
33
|
+
elsif timezone == ''
|
34
|
+
timezone = nil
|
35
|
+
end
|
36
|
+
|
37
|
+
timezone
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: w3c_datetime
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-09-
|
12
|
+
date: 2013-09-04 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -50,6 +50,8 @@ extensions: []
|
|
50
50
|
extra_rdoc_files: []
|
51
51
|
files:
|
52
52
|
- lib/w3c_datetime.rb
|
53
|
+
- lib/time.rb
|
54
|
+
- lib/w3c_datetime/w3c_datetime.rb
|
53
55
|
homepage: https://github.com/itsudo/w3c_datetime
|
54
56
|
licenses:
|
55
57
|
- MIT
|
@@ -76,3 +78,4 @@ signing_key:
|
|
76
78
|
specification_version: 3
|
77
79
|
summary: Deal with date and time in w3c format
|
78
80
|
test_files: []
|
81
|
+
has_rdoc:
|