Class: Roo::Excelx::Cell::DateTime
- Defined in:
- lib/roo/excelx/cell/datetime.rb
Instance Attribute Summary collapse
-
#cell_value ⇒ Object
readonly
Returns the value of attribute cell_value.
-
#coordinate ⇒ Object
readonly
Returns the value of attribute coordinate.
-
#format ⇒ Object
readonly
Returns the value of attribute format.
-
#formula ⇒ Object
readonly
Returns the value of attribute formula.
-
#link ⇒ Object
readonly
Returns the value of attribute link.
-
#value ⇒ Object
readonly
Returns the value of attribute value.
Attributes inherited from Base
Instance Method Summary collapse
-
#formatted_value ⇒ Object
Public: Returns formatted value for a datetime.
-
#initialize(value, formula, excelx_type, style, link, base_date, coordinate) ⇒ DateTime
constructor
A new instance of DateTime.
Methods inherited from Base
#empty?, #excelx_type, #excelx_value, #formula?, #hyperlink, #link?, #to_s, #type
Constructor Details
#initialize(value, formula, excelx_type, style, link, base_date, coordinate) ⇒ DateTime
Returns a new instance of DateTime.
9 10 11 12 13 14 |
# File 'lib/roo/excelx/cell/datetime.rb', line 9 def initialize(value, formula, excelx_type, style, link, base_date, coordinate) super(value, formula, excelx_type, style, link, coordinate) @type = :datetime @format = excelx_type.last @value = link? ? Roo::Link.new(link, value) : create_datetime(base_date, value) end |
Instance Attribute Details
#cell_value ⇒ Object (readonly)
Returns the value of attribute cell_value.
7 8 9 |
# File 'lib/roo/excelx/cell/datetime.rb', line 7 def cell_value @cell_value end |
#coordinate ⇒ Object (readonly)
Returns the value of attribute coordinate.
7 8 9 |
# File 'lib/roo/excelx/cell/datetime.rb', line 7 def coordinate @coordinate end |
#format ⇒ Object (readonly)
Returns the value of attribute format.
7 8 9 |
# File 'lib/roo/excelx/cell/datetime.rb', line 7 def format @format end |
#formula ⇒ Object (readonly)
Returns the value of attribute formula.
7 8 9 |
# File 'lib/roo/excelx/cell/datetime.rb', line 7 def formula @formula end |
#link ⇒ Object (readonly)
Returns the value of attribute link.
7 8 9 |
# File 'lib/roo/excelx/cell/datetime.rb', line 7 def link @link end |
#value ⇒ Object (readonly)
Returns the value of attribute value.
7 8 9 |
# File 'lib/roo/excelx/cell/datetime.rb', line 7 def value @value end |
Instance Method Details
#formatted_value ⇒ Object
Public: Returns formatted value for a datetime. Format’s can be an
standard excel format, or a custom format.
Standard formats follow certain conventions. Date fields for
days, months, and years are separated with hyhens or
slashes ("-", /") (e.g. 01-JAN, 1/13/15). Time fields for
hours, minutes, and seconds are separated with a colon (e.g.
12:45:01).
If a custom format follows those conventions, then the custom
format will be used for the a cell's formatted value.
Otherwise, the formatted value will be in the following
format: 'YYYY-mm-dd HH:MM:SS' (e.g. "2015-07-10 20:33:15").
Examples
formatted_value #=> '01-JAN'
Returns a String representation of a cell’s value.
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/roo/excelx/cell/datetime.rb', line 34 def formatted_value date_regex = /(?<date>[dmy]+[\-\/][dmy]+([\-\/][dmy]+)?)/ time_regex = /(?<time>(\[?[h]\]?+:)?[m]+(:?ss|:?s)?)/ formatter = @format.downcase.split(' ').map do |part| if part[date_regex] == part part.gsub(/#{DATE_FORMATS.keys.join('|')}/, DATE_FORMATS) elsif part[time_regex] part.gsub(/#{TIME_FORMATS.keys.join('|')}/, TIME_FORMATS) else warn 'Unable to parse custom format. Using "YYYY-mm-dd HH:MM:SS" format.' return @value.strftime('%F %T') end end.join(' ') @value.strftime(formatter) end |