mirror of
https://github.com/samsonjs/SwiftTimeZoneLookup.git
synced 2026-03-25 08:25:49 +00:00
correct more timezones
This commit is contained in:
parent
9fc508efb2
commit
1a653bcc6d
2 changed files with 47 additions and 1 deletions
|
|
@ -108,7 +108,7 @@ public final class SwiftTimeZoneLookup {
|
||||||
return SwiftTimeZoneLookupResult(timezone: timezone, countryName: countryName, countryAlpha2: countryAlpha2)
|
return SwiftTimeZoneLookupResult(timezone: timezone, countryName: countryName, countryAlpha2: countryAlpha2)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Resolve the timz
|
/// Resolve the timezone
|
||||||
public func simple(latitude: Float, longitude: Float) -> String? {
|
public func simple(latitude: Float, longitude: Float) -> String? {
|
||||||
if (36.2443...36.7389).contains(latitude) && (26.0019...26.7957).contains(longitude) {
|
if (36.2443...36.7389).contains(latitude) && (26.0019...26.7957).contains(longitude) {
|
||||||
// Astypalaia island in Greece does not resolve any timezone and would return nil
|
// Astypalaia island in Greece does not resolve any timezone and would return nil
|
||||||
|
|
@ -120,6 +120,40 @@ public final class SwiftTimeZoneLookup {
|
||||||
return "America/Curacao"
|
return "America/Curacao"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if let timezone = simpleUncorrected(latitude: latitude, longitude: longitude) {
|
||||||
|
return timezone
|
||||||
|
}
|
||||||
|
for delta in stride(from: Float(0.1), through: 2.35, by: 0.25) {
|
||||||
|
if let timezone = simpleUncorrected(latitude: latitude + delta, longitude: longitude) {
|
||||||
|
return timezone
|
||||||
|
}
|
||||||
|
if let timezone = simpleUncorrected(latitude: latitude - delta, longitude: longitude) {
|
||||||
|
return timezone
|
||||||
|
}
|
||||||
|
if let timezone = simpleUncorrected(latitude: latitude, longitude: longitude + delta) {
|
||||||
|
return timezone
|
||||||
|
}
|
||||||
|
if let timezone = simpleUncorrected(latitude: latitude, longitude: longitude - delta) {
|
||||||
|
return timezone
|
||||||
|
}
|
||||||
|
if let timezone = simpleUncorrected(latitude: latitude + delta, longitude: longitude + delta) {
|
||||||
|
return timezone
|
||||||
|
}
|
||||||
|
if let timezone = simpleUncorrected(latitude: latitude - delta, longitude: longitude + delta) {
|
||||||
|
return timezone
|
||||||
|
}
|
||||||
|
if let timezone = simpleUncorrected(latitude: latitude + delta, longitude: longitude - delta) {
|
||||||
|
return timezone
|
||||||
|
}
|
||||||
|
if let timezone = simpleUncorrected(latitude: latitude - delta, longitude: longitude - delta) {
|
||||||
|
return timezone
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Resolve the timezone without any corrections
|
||||||
|
private func simpleUncorrected(latitude: Float, longitude: Float) -> String? {
|
||||||
guard let result = highResLookup(latitude: latitude, longitude: longitude) else {
|
guard let result = highResLookup(latitude: latitude, longitude: longitude) else {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -26,5 +26,17 @@ final class SwiftTimeZoneLookupTests: XCTestCase {
|
||||||
|
|
||||||
// https://github.com/open-meteo/open-meteo/issues/589
|
// https://github.com/open-meteo/open-meteo/issues/589
|
||||||
XCTAssertEqual(database.simple(latitude: 12.2, longitude: -68.97), "America/Curacao")
|
XCTAssertEqual(database.simple(latitude: 12.2, longitude: -68.97), "America/Curacao")
|
||||||
|
|
||||||
|
// https://github.com/open-meteo/open-meteo/issues/591
|
||||||
|
XCTAssertEqual(database.simple(latitude: 10.12, longitude: -64.70), "Etc/GMT+4")
|
||||||
|
XCTAssertEqual(database.simple(latitude: 12.13, longitude: -68.28), "America/Kralendijk")
|
||||||
|
XCTAssertEqual(database.simple(latitude: 10.61, longitude: -66.98), "Etc/GMT+4")
|
||||||
|
XCTAssertEqual(database.simple(latitude: 6.73 , longitude: -66.98), "America/Bogota")
|
||||||
|
XCTAssertEqual(database.simple(latitude: 12.05, longitude: -61.73), "America/Grenada")
|
||||||
|
XCTAssertEqual(database.simple(latitude: 10.97, longitude: -63.83), "Etc/GMT+4")
|
||||||
|
XCTAssertEqual(database.simple(latitude: 10.65, longitude: -61.52), "America/Grenada")
|
||||||
|
XCTAssertEqual(database.simple(latitude: 7.58, longitude: -72.07), "America/Bogota")
|
||||||
|
XCTAssertEqual(database.simple(latitude: 11.15, longitude: -60.84), "Etc/GMT+4")
|
||||||
|
XCTAssertEqual(database.simple(latitude: 10.15, longitude: -68.03), "Etc/GMT+5")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue