Skip to content

Commit b2c4815

Browse files
author
Martin Dinh
committed
Merge branch '43-closedareas-daylight-saving-time-bug' into 'master'
Resolve "ClosedAreas daylight saving time bug" Closes #43 See merge request pace/mobile/ios/pace-cloud-sdk!42
2 parents 53a991b + 17b3969 commit b2c4815

File tree

2 files changed

+31
-33
lines changed

2 files changed

+31
-33
lines changed

PACECloudSDK/POIKit/POISearch/Model/GasStation+OpeningHours.swift

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -425,9 +425,8 @@ extension Array where Element: PCCommonOpeningHours.Rules {
425425
let oneDay: Double = 24 * 60 * 60
426426
// dates for each given weekday (`days`)
427427
let dates = [date.addingTimeInterval(-oneDay*2), date.addingTimeInterval(-oneDay), date, date.addingTimeInterval(oneDay), date.addingTimeInterval(oneDay*2)]
428-
let isDaylightSaving = TimeZone.current.isDaylightSavingTime()
429-
let minutesOffset = Double(TimeZone.current.secondsFromGMT(for: Date()) + (!isDaylightSaving ? 3600 : 0)) / 60
430-
428+
let daylightSavingTimeOffset = TimeZone.current.daylightSavingTimeOffset()
429+
let timeZoneOffset = Double(TimeZone.current.secondsFromGMT(for: Date())) / 60
431430

432431
var openingValues = [(Double, Double)]()
433432
var closedValues = [(Double, Double)]()
@@ -441,8 +440,8 @@ extension Array where Element: PCCommonOpeningHours.Rules {
441440
var end = array.last else { return }
442441

443442
// Convert start/end to unix timestamps
444-
start = (start - minutesOffset) * 60 + dates[i].today.timeIntervalSince1970
445-
end = (end - minutesOffset) * 60 + dates[i].today.timeIntervalSince1970
443+
start = (start - timeZoneOffset) * 60 + dates[i].today.timeIntervalSince1970 + daylightSavingTimeOffset
444+
end = (end - timeZoneOffset) * 60 + dates[i].today.timeIntervalSince1970 + daylightSavingTimeOffset
446445

447446
switch $0.1 {
448447
case .open:

PACECloudSDKTests/POIKitTests/OpeningHoursTests.swift

Lines changed: 27 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,11 @@ class OpeningHoursTests: XCTestCase {
3232
XCTAssertEqual(oh.description, #"[["mo", "tu", "we", "th", "fr", "sa", "su"]: [From 5 to 23:45]: open]"#)
3333

3434
let controlData = [
35-
(-93600.0, -75600.0),
36-
(-8160.0, 10800.0),
37-
(78240.0, 97200.0),
38-
(164640.0, 183600.0),
39-
(251040.0, 270000.0),
40-
(337440.0, 338400.0)
35+
(-93600.0, -72000.0),
36+
(-4560.0, 14400.0),
37+
(81840.0, 100800.0),
38+
(168240.0, 187200.0),
39+
(254640.0, 273600.0)
4140
]
4241

4342
XCTAssert(oh.getClosedAreas(around: Date(timeIntervalSince1970: 24 * 60 * 60)) == controlData)
@@ -52,8 +51,8 @@ class OpeningHoursTests: XCTestCase {
5251
XCTAssertEqual(oh.description, #"[["tu", "we", "th", "fr", "sa", "su"]: [From 0 to 0]: close, ["mo"]: [From 0 to 0]: open]"#)
5352

5453
let controlData = [
55-
(165600.0, 338400.0),
56-
(424740.0, 597600.0)
54+
(165600.0, 342000.0),
55+
(428340.0, 601140.0)
5756
]
5857

5958
XCTAssertTrue(oh.getClosedAreas(around: Date(timeIntervalSince1970: 4 * 24 * 60 * 60)) == controlData)
@@ -68,11 +67,11 @@ class OpeningHoursTests: XCTestCase {
6867
XCTAssertEqual(oh.description, #"[["su"]: [From 0 to 0]: close, ["mo", "tu", "we", "th", "fr", "sa"]: [From 7 to 20]: open]"#)
6968

7069
let controlData = [
71-
(79200.0, 104400.0),
72-
(151140.0, 190800.0),
73-
(237540.0, 363600.0),
74-
(410340.0, 450000.0),
75-
(496740.0, 511200.0)
70+
(79200.0, 108000.0),
71+
(154740.0, 194400.0),
72+
(241140.0, 367200.0),
73+
(413940.0, 453600.0),
74+
(500340.0, 511200.0)
7675
]
7776

7877
XCTAssertTrue(oh.getClosedAreas(around: Date(timeIntervalSince1970: 3 * 24 * 60 * 60)) == controlData)
@@ -84,16 +83,16 @@ class OpeningHoursTests: XCTestCase {
8483
]
8584

8685
let controlData = [
87-
(-54000.0, -43260.0),
88-
(-18000.0, 10740.0),
89-
(32400.0, 43140.0),
90-
(68400.0, 97140.0),
91-
(118800.0, 129540.0),
92-
(154800.0, 183540.0),
93-
(205200.0, 215940.0),
94-
(241200.0, 269940.0),
95-
(291600.0, 302340.0),
96-
(327600.0, 356340.0)
86+
(-50400.0, -39660.0),
87+
(-14400.0, 14340.0),
88+
(36000.0, 46740.0),
89+
(72000.0, 100740.0),
90+
(122400.0, 133140.0),
91+
(158400.0, 187140.0),
92+
(208800.0, 219540.0),
93+
(244800.0, 273540.0),
94+
(295200.0, 305940.0),
95+
(331200.0, 359940.0)
9796
]
9897

9998
XCTAssertEqual(oh.description, #"[["mo", "tu", "we", "th", "fr", "sa", "su"]: [From 21 to 5, From 11 to 14]: close]"#)
@@ -107,11 +106,11 @@ class OpeningHoursTests: XCTestCase {
107106
]
108107

109108
let controlData = [
110-
(-93600.0, -21600.0),
111-
(21540.0, 64800.0),
112-
(107940.0, 151200.0),
113-
(194340.0, 237600.0),
114-
(280740.0, 324000.0)
109+
(-93600.0, -18000.0),
110+
(25140.0, 68400.0),
111+
(111540.0, 154800.0),
112+
(197940.0, 241200.0),
113+
(284340.0, 327600.0)
115114
]
116115

117116
XCTAssertEqual(oh.description, #"[["mo", "tu", "we", "th", "fr", "sa", "su"]: [From 20 to 8]: open]"#)

0 commit comments

Comments
 (0)