rocketsofawesome/newgistics-ruby

View on GitHub
lib/newgistics/time_parsers/iso8601.rb

Summary

Maintainability
A
0 mins
Test Coverage
module Newgistics
  module TimeParsers
    class ISO8601
      def parse(string)
        date = string.dup
        unless includes_timezone?(string)
          date << Newgistics.time_zone.utc_offset
        end
        parse_date(date, string)
      end

      private

      def parse_date(date, fallback)
        Time.iso8601(date).getlocal(Newgistics.local_time_zone.utc_offset)
      rescue ArgumentError
        fallback
      end

      def includes_timezone?(value)
        value =~ /Z|[+-]\d{2}:\d{2}\z/
      end
    end
  end
end