Module: ONIX::DateMethods

Included in:
BaseDate
Defined in:
lib/onix/date.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#dateDate

Returns:

  • (Date)


6
7
8
# File 'lib/onix/date.rb', line 6

def date
  @date
end

#date_formatDateFormat

Returns:



4
5
6
# File 'lib/onix/date.rb', line 4

def date_format
  @date_format
end

#datetimeTime

Returns:

  • (Time)


8
9
10
# File 'lib/onix/date.rb', line 8

def datetime
  @datetime
end

Instance Method Details

#format_from_code(code) ⇒ String

Parameters:

  • code (String)

Returns:

  • (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

Parameters:

  • str (String)


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_dateObject



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

Parameters:

Returns:

  • (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

#timeTime

Returns:

  • (Time)


87
88
89
# File 'lib/onix/date.rb', line 87

def time
  @datetime
end