diff --git a/Sources/Segment/Utilities/iso8601.swift b/Sources/Segment/Utilities/iso8601.swift index cbfe6ae1..9bc03c44 100644 --- a/Sources/Segment/Utilities/iso8601.swift +++ b/Sources/Segment/Utilities/iso8601.swift @@ -7,31 +7,24 @@ import Foundation -var __segment_isoDateFormatter = SegmentISO8601DateFormatter() - -class SegmentISO8601DateFormatter: DateFormatter { - override init() { - super.init() - - self.dateFormat = "yyyy'-'MM'-'dd'T'HH':'mm':'ss.SSS:'Z'" - self.locale = Locale(identifier: "en_US_POSIX") - self.timeZone = TimeZone(secondsFromGMT: 0) - } +enum SegmentISO8601DateFormatter { - required init?(coder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } + static let shared: ISO8601DateFormatter = { + let formatter = ISO8601DateFormatter() + formatter.formatOptions.update(with: .withFractionalSeconds) + return formatter + }() } internal extension Date { // TODO: support nanoseconds func iso8601() -> String { - return __segment_isoDateFormatter.string(from: self) + return SegmentISO8601DateFormatter.shared.string(from: self) } } internal extension String { func iso8601() -> Date? { - return __segment_isoDateFormatter.date(from: self) + return SegmentISO8601DateFormatter.shared.date(from: self) } }