Class: Axlsx::DateTimeConverter
- Inherits:
-
Object
- Object
- Axlsx::DateTimeConverter
- Defined in:
- lib/axlsx/workbook/worksheet/date_time_converter.rb
Overview
The DateTimeConverter class converts both data and time types to their appropriate Excel serializations
Class Method Summary collapse
-
.date_to_serial(date) ⇒ Numeric
The date_to_serial method converts Date objects to the equivalent Excel serialized forms.
-
.time_to_serial(time) ⇒ Numeric
The time_to_serial methond converts a Time object its Excel serialized form.
Class Method Details
.date_to_serial(date) ⇒ Numeric
The date_to_serial method converts Date objects to the equivalent Excel serialized forms
11 12 13 14 15 |
# File 'lib/axlsx/workbook/worksheet/date_time_converter.rb', line 11 def self.date_to_serial(date) epoch = Axlsx::Workbook.date1904 ? Date.new(1904) : Date.new(1899, 12, 30) offset_date = date.respond_to?(:utc_offset) ? date + date.utc_offset.seconds : date (offset_date - epoch).to_f end |
.time_to_serial(time) ⇒ Numeric
The time_to_serial methond converts a Time object its Excel serialized form.
20 21 22 23 24 25 26 27 28 |
# File 'lib/axlsx/workbook/worksheet/date_time_converter.rb', line 20 def self.time_to_serial(time) # Using hardcoded offsets here as some operating systems will not except # a 'negative' offset from the ruby epoch. epoch1900 = -2209161600.0 # Time.utc(1899, 12, 30).to_i epoch1904 = -2082844800.0 # Time.utc(1904, 1, 1).to_i seconds_per_day = 86400.0 # 60*60*24 epoch = Axlsx::Workbook.date1904 ? epoch1904 : epoch1900 (time.utc_offset + time.to_f - epoch) / seconds_per_day end |