6
6
//
7
7
8
8
import Foundation
9
- #if os(Linux)
10
- import Glibc
11
- #endif
12
9
13
10
struct GHDateFormatter {
14
- #if os(Windows)
11
+ #if os(OSX)
12
+ private static var timeData = tm ( )
13
+ private static var dateParserHolder = " +0000 " . cString ( using: String . Encoding. ascii) !
14
+ static func parseGH8601( _ iso8601: String ? ) -> Date ? {
15
+ guard let i = iso8601, i. count > 18 else { return nil }
16
+
17
+ memcpy ( & dateParserHolder, i, 19 )
18
+ strptime ( dateParserHolder, " %FT%T%z " , & timeData)
19
+
20
+ let t = mktime ( & timeData)
21
+ return Date ( timeIntervalSince1970: TimeInterval ( t) )
22
+ }
23
+
24
+ #elseif os(Linux) || os(Windows)
15
25
private static let formatter : DateFormatter = {
16
26
let d = DateFormatter ( )
17
27
d. timeZone = TimeZone ( secondsFromGMT: 0 )
@@ -24,18 +34,6 @@ struct GHDateFormatter {
24
34
guard let i = iso8601 else { return nil }
25
35
return formatter. date ( from: i)
26
36
}
27
- #else
28
- private static var timeData = tm ( )
29
- private static var dateParserHolder = " +0000 " . cString ( using: . ascii) !
30
- static func parseGH8601( _ iso8601: String ? ) -> Date ? {
31
- guard let i = iso8601, i. count > 18 else { return nil }
32
-
33
- memcpy ( & dateParserHolder, i, 19 )
34
- strptime ( dateParserHolder, " %FT%T%z " , & timeData)
35
-
36
- let t = mktime ( & timeData)
37
- return Date ( timeIntervalSince1970: TimeInterval ( t) )
38
- }
39
37
#endif
40
38
}
41
39
0 commit comments