Module: AfterShip::DateUtils

Defined in:
lib/after_ship/core/date_utils.rb

Overview

Simple utility class for parsing dates and datetimes.

Constant Summary collapse

DATE_PLAIN_REGEX =

Date:

YYYYMMDD

/
  \A
  \d{4}\d{2}\d{2}
  \z
/x
DATE_REGEX =

Date:

YYYY-MM-DD

/
  \A
  \d{4}-\d{2}-\d{2}
  \z
/x
DATETIME_REGEX =

Datetime without zone:

YYYY-MM-DDTHH:MM:SS

/
  \A
  \d{4}-\d{2}-\d{2}
  T
  \d{2}:\d{2}:\d{2}
  \z
/x
DATETIME_WITH_ZONE_REGEX =

Datetime with zone:

YYYY-MM-DDTHH:MM:SSZ YYYY-MM-DDTHH:MM:SSHH:MM+ YYYY-MM-DDTHH:MM:SS-HH:MM

/
  \A
  \d{4}-\d{2}-\d{2}
  T
  \d{2}:\d{2}:\d{2}
  (Z|[+-]\d{2}:\d{2})
  \z
/x

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.parse(value) ⇒ Object

Try to parse a date or datetime from a string.

Parameters:

  • value (String)

    Empty String, YYYY-MM-DD, YYYY-MM-DDTHH:MM:SS, YYYY-MM-DDTHH:MM:SSZ, YYYY-MM-DDTHH:MM:SS+HH:MM or YYYY-MM-DDTHH:MM:SS-HH:MM.



59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/after_ship/core/date_utils.rb', line 59

def parse(value)
  case value
  when '', nil
    nil
  when DATE_PLAIN_REGEX, DATE_REGEX
    Date.parse(value)
  when DATETIME_REGEX, DATETIME_WITH_ZONE_REGEX
    DateTime.parse(value)
  else
    fail ArgumentError, "Invalid expected_delivery date #{value.inspect}"
  end
end

Instance Method Details

#parse(value) ⇒ Object (private)

Try to parse a date or datetime from a string.

Parameters:

  • value (String)

    Empty String, YYYY-MM-DD, YYYY-MM-DDTHH:MM:SS, YYYY-MM-DDTHH:MM:SSZ, YYYY-MM-DDTHH:MM:SS+HH:MM or YYYY-MM-DDTHH:MM:SS-HH:MM.



59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/after_ship/core/date_utils.rb', line 59

def parse(value)
  case value
  when '', nil
    nil
  when DATE_PLAIN_REGEX, DATE_REGEX
    Date.parse(value)
  when DATETIME_REGEX, DATETIME_WITH_ZONE_REGEX
    DateTime.parse(value)
  else
    fail ArgumentError, "Invalid expected_delivery date #{value.inspect}"
  end
end