motion/core/time.rb in bubble-wrap-1.7.1 vs motion/core/time.rb in bubble-wrap-1.8.0

- old
+ new

@@ -1,26 +1,49 @@ class Time - + def self.iso8601(time) + if time.include?(".") + # Fractional Seconds + if time.include?('Z') + iso8601_with_fractional_seconds(time) + else + iso8601_with_fractional_seconds_and_timesone(time) + end + else + # Non Fractional Seconds + if time.include?('Z') + iso8601_zulu(time) + else + iso8601_with_timezone(time) + end + end + end + + def self.iso8601_zulu(time) cached_date_formatter("yyyy-MM-dd'T'HH:mm:ss'Z'"). dateFromString(time) end - + def self.iso8601_with_timezone(time) cached_date_formatter("yyyy-MM-dd'T'HH:mm:ssZZZZZ"). dateFromString(time) end - + def self.iso8601_with_fractional_seconds(time) cached_date_formatter("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"). dateFromString(time) end + def self.iso8601_with_fractional_seconds_and_timesone(time) + cached_date_formatter("yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ"). + dateFromString(time) + end + private def self.cached_date_formatter(dateFormat) Thread.current[:date_formatters] ||= {} - Thread.current[:date_formatters][dateFormat] ||= + Thread.current[:date_formatters][dateFormat] ||= NSDateFormatter.alloc.init.tap do |formatter| formatter.dateFormat = dateFormat formatter.timeZone = NSTimeZone.timeZoneWithAbbreviation "UTC" end end