From 65ec495117d22df16ef1c3fc94bdcfe0f2d32d30 Mon Sep 17 00:00:00 2001 From: Randy Morgan Date: Thu, 23 Feb 2012 09:44:33 +0900 Subject: renaming for clarity, a bit of docs and some patches to spec for AWSOME date/time converter as negative date/time does not parse in some environments under 1.8.7 --- lib/axlsx/workbook/workbook.rb | 2 +- lib/axlsx/workbook/worksheet/converter.rb | 21 ------------------ .../workbook/worksheet/date_time_converter.rb | 25 ++++++++++++++++++++++ 3 files changed, 26 insertions(+), 22 deletions(-) delete mode 100644 lib/axlsx/workbook/worksheet/converter.rb create mode 100644 lib/axlsx/workbook/worksheet/date_time_converter.rb (limited to 'lib') diff --git a/lib/axlsx/workbook/workbook.rb b/lib/axlsx/workbook/workbook.rb index c19c3521..8a6eb629 100644 --- a/lib/axlsx/workbook/workbook.rb +++ b/lib/axlsx/workbook/workbook.rb @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- module Axlsx -require 'axlsx/workbook/worksheet/converter.rb' +require 'axlsx/workbook/worksheet/date_time_converter.rb' require 'axlsx/workbook/worksheet/cell.rb' require 'axlsx/workbook/worksheet/row.rb' require 'axlsx/workbook/worksheet/worksheet.rb' diff --git a/lib/axlsx/workbook/worksheet/converter.rb b/lib/axlsx/workbook/worksheet/converter.rb deleted file mode 100644 index 8df08f34..00000000 --- a/lib/axlsx/workbook/worksheet/converter.rb +++ /dev/null @@ -1,21 +0,0 @@ -# encoding: UTF-8 -require "date" - -module Axlsx - class Converter - def date_to_serial(date, date1904=false) - epoc = date1904 ? Date.new(1904) : Date.new(1899, 12, 30) - (date-epoc).to_f - end - - def time_to_serial(time, date1904=false) - # Using hardcoded offsets here as some operating systems will not except - # a 'negative' offset from the ruby epoc. - epoc1900 = -2209161600 # Time.utc(1899, 12, 30).to_i - epoc1904 = -2082844800 # Time.utc(1904, 1, 1).to_i - seconds_per_day = 86400 # 60*60*24 - epoc = date1904 ? epoc1904 : epoc1900 - (time.to_f - epoc)/seconds_per_day - end - end -end diff --git a/lib/axlsx/workbook/worksheet/date_time_converter.rb b/lib/axlsx/workbook/worksheet/date_time_converter.rb new file mode 100644 index 00000000..ee6d4a8a --- /dev/null +++ b/lib/axlsx/workbook/worksheet/date_time_converter.rb @@ -0,0 +1,25 @@ +# encoding: UTF-8 +require "date" + +module Axlsx + # The DateTimeConverter class converts both data and time types to their apprpriate excel serializations + class DateTimeConverter + + # The date_to_serial method converts dates to their excel serialized forms + # @param [Date] date the date to be serialized + def date_to_serial(date) + epoc = Axlsx::Workbook::date1904 ? Date.new(1904) : Date.new(1899, 12, 30) + (date-epoc).to_f + end + + def time_to_serial(time) + # Using hardcoded offsets here as some operating systems will not except + # a 'negative' offset from the ruby epoc. + epoc1900 = -2209161600 # Time.utc(1899, 12, 30).to_i + epoc1904 = -2082844800 # Time.utc(1904, 1, 1).to_i + seconds_per_day = 86400 # 60*60*24 + epoc = Axlsx::Workbook::date1904 ? epoc1904 : epoc1900 + (time.to_f - epoc)/seconds_per_day + end + end +end -- cgit v1.2.3