Sha256: 81971ff5baf7424cb3bad66271e966eb56197d98519de6ae377a265630262938

Contents?: true

Size: 697 Bytes

Versions: 4

Compression:

Stored size: 697 Bytes

Contents

module ExcelAbstraction
  class Time < SimpleDelegator
    ADJUSTMENT = "1900-03-01 00:00 +00:00"
    REFERENCE = "1900-01-01 00:00 +00:00"

    attr_reader :value

    def initialize(raw_value)
      super(convert(raw_value))
    end

    def to_excel_time
      self
    end

    private

    def adjustment
      ::Time.parse(ADJUSTMENT)
    end

    def reference
      ::Time.parse(REFERENCE)
    end

    def adjust(raw_value)
      adjustment < raw_value ? two_days : one_day
    end

    def two_days
      one_day * 2.0
    end

    def one_day
      60 * 60 * 24.to_f
    end

    def convert(raw_value)
      (raw_value - reference + adjust(raw_value)).to_f / one_day
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
excel_templating-0.4.2 lib/excel_templating/excel_abstraction/time.rb
excel_templating-0.4.1 lib/excel_templating/excel_abstraction/time.rb
excel_templating-0.4.0 lib/excel_templating/excel_abstraction/time.rb
excel_templating-0.3.2 lib/excel_templating/excel_abstraction/time.rb