Module: ONIX::DateMethods
- Included in:
- BaseDate
- Defined in:
- lib/onix/date.rb
Instance Attribute Summary collapse
Instance Method Summary collapse
- #format_from_code(code) ⇒ String
- #format_from_string(str) ⇒ Object
- #parse_date ⇒ Object
- #strpdate!(date_txt, date_format) ⇒ Time
- #time ⇒ Time
Instance Attribute Details
#date ⇒ Date
6 7 8 |
# File 'lib/onix/date.rb', line 6 def date @date end |
#datetime ⇒ Time
8 9 10 |
# File 'lib/onix/date.rb', line 8 def datetime @datetime end |
Instance Method Details
#format_from_code(code) ⇒ String
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/onix/date.rb', line 49 def format_from_code(code) case code when "00" "%Y%m%d" when "01" "%Y%m" when "02" "%Y%%W" when "05" "%Y" when "13" "%Y%m%dT%H%M%S" when "14" "%Y%m%dT%H%M%S%z" else nil end end |
#format_from_string(str) ⇒ Object
69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
# File 'lib/onix/date.rb', line 69 def format_from_string(str) case str when /^\d{4}\d{2}\d{2}T\d{2}\d{2}\d{2}/ "%Y%m%dT%H%M%S%z" when /^\d{4}\-\d{2}\-\d{2}$/ "%Y-%m-%d" when /^\d{4}\d{2}\d{2}$/ "%Y%m%d" when /^\d{4}\d{2}$/ "%Y%m" when /^\d{4}$/ "%Y" else nil end end |
#parse_date ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 21 |
# File 'lib/onix/date.rb', line 10 def parse_date if @date_format @deprecated_date_format = true else if @date.is_a?(TextWithAttributes) @date_format = @date.attributes["dateformat"] end end @datetime = strpdate!(@date, @date_format) @date = @datetime ? @datetime.to_date : nil end |
#strpdate!(date_txt, date_format) ⇒ Time
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/onix/date.rb', line 26 def strpdate!(date_txt, date_format) date_format ||= DateFormat.from_code("00") code_format = format_from_code(date_format.code) text_format = format_from_string(date_txt) format = code_format if code_format != text_format # puts "WARN incorrect date format #{text_format} != #{code_format}" format = text_format end begin datetime = Time.strptime(date_txt, format) if format && %w[00 01 02 05 13 14].include?(date_format.code) rescue => e # invalid date end datetime end |
#time ⇒ Time
87 88 89 |
# File 'lib/onix/date.rb', line 87 def time @datetime end |