Class: Date
- Inherits:
-
Object
- Object
- Date
- Defined in:
- lib/zones.rb
Overview
/*
* date ::= yeardate time_opt timezone_opt
* yeardate ::= year colon_opt month colon_opt day
* year ::= sign_opt digit{4,6}
* colon_opt :: <empty> | ':'
* sign ::= '+' | '-'
* sign_opt ::= <empty> | sign
* month ::= digit{2}
* day ::= digit{2}
* time_opt ::= <empty> | (' ' | 'T') hour minutes_opt
* minutes_opt ::= <empty> | colon_opt digit{2} seconds_opt
* seconds_opt ::= <empty> | colon_opt digit{2} millis_opt
* micros_opt ::= <empty> | ('.' | ',') digit+
* timezone_opt ::= <empty> | space_opt timezone
* space_opt :: ' ' | <empty>
* timezone ::= 'z' | 'Z' | sign digit{2} timezonemins_opt
* timezonemins_opt ::= <empty> | colon_opt digit{2}
*/
static final RegExp _parseFormat =
RegExp(r'^([+-]?\d{4,6})-?(\d\d)-?(\d\d)' // Day part.
r'(?:[ T](\d\d)(?::?(\d\d)(?::?(\d\d)(?:[.,](\d+))?)?)?' // Time part.
r'( ?[zZ]| ?([-+])(\d\d)(?::?(\d\d))?)?)?$'); // Timezone part.
Class Method Summary collapse
- .parse_str(str) ⇒ Object
-
.to_day(str) ⇒ Object
parse date.
Class Method Details
.parse_str(str) ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/zones.rb', line 29 def self.parse_str(str) case str when %r!^((?:19|20)\d\d)(\d\d)(\d\d)(\d\d)! ymd = [$1.to_i, $2.to_i, $3.to_i] when %r!^ (?:(0[1-9]|[12]\d|3[01]|[1-9][-/ ])[-/ ]? # $1: day ((?>[a-z]{3,9}))[-/ ]? # $2: month ((?>19|20)\d\d) # $3: year | # or... ((?>19|20)\d\d)[-/]? # $4: year (0[1-9]|1[012]|[1-9][-/])[-/]? # $5: month (0[1-9]|[12]\d|3[01]|[1-9][\sT]) # $6: day | # or... (0[1-9]|1[012]|[1-9][-/])[-/]? # $7: month (0[1-9]|[12]\d|3[01]|[1-9][-/])[-/]? # $8: day ((?>19|20)\d\d) # $9: year ) !iox ymd = $1 ? [$3.to_i, month_num($2), $1.to_i] : $4 ? [$4.to_i, $5.to_i, $6.to_i] : [$9.to_i, $7.to_i, $8.to_i] else raise "can't parse: #{str}" end ymd end |
.to_day(str) ⇒ Object
parse date
55 56 57 58 |
# File 'lib/zones.rb', line 55 def self.to_day(str) ymd = parse_str(str) out = Date.new(*ymd) end |