From c9264ed5e2490b1aa1930f60f9025eddfb4b8660 Mon Sep 17 00:00:00 2001 From: PeHon Date: Mon, 4 May 2020 21:26:08 +0800 Subject: [PATCH 1/4] Fixed issue when Sunrise timing is 2300 while current time is 2330, isDayTime wrongly shows false. --- Solar/Solar.swift | 31 ++++++++++++++++++++++++++----- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/Solar/Solar.swift b/Solar/Solar.swift index d2d67e6..34955b2 100644 --- a/Solar/Solar.swift +++ b/Solar/Solar.swift @@ -214,14 +214,35 @@ extension Solar { return false } - let beginningOfDay = sunrise.timeIntervalSince1970 - let endOfDay = sunset.timeIntervalSince1970 + let todaySunrise = sunrise.timeIntervalSince1970 + let todaySunset = sunset.timeIntervalSince1970 let currentTime = self.date.timeIntervalSince1970 - let isSunriseOrLater = currentTime >= beginningOfDay - let isBeforeSunset = currentTime < endOfDay + var yesterday = Date() + if #available(iOSApplicationExtension 13.0, *) { + yesterday = date.advanced(by: TimeInterval(exactly: -86400.0)!) + } else { + + yesterday = date.addingTimeInterval(TimeInterval(exactly: -86400.0)!) + } + let yesterdaySunrise = calculate(.sunrise, for: yesterday, and: .official)?.timeIntervalSince1970 + let yesterdaySunset = calculate(.sunset, for: yesterday, and: .official)?.timeIntervalSince1970 + + var tomorrow = Date() + if #available(iOSApplicationExtension 13.0, *) { + tomorrow = date.advanced(by: TimeInterval(exactly: 86400.0)!) + } else { + tomorrow = date.addingTimeInterval(TimeInterval(exactly: 86400.0)!) + } + + let tomorrowSunrise = calculate(.sunrise, for: tomorrow, and: .official)?.timeIntervalSince1970 + let tomorrowSunSet = calculate(.sunset, for: tomorrow, and: .official)?.timeIntervalSince1970 + + let isDayYesterday = yesterdaySunrise! < currentTime && currentTime < yesterdaySunset! + let isDayToday = todaySunrise < currentTime && currentTime < todaySunset + let isDayTomorrow = tomorrowSunrise! < currentTime && currentTime < tomorrowSunSet! - return isSunriseOrLater && isBeforeSunset + return isDayYesterday || isDayToday || isDayTomorrow } /// Whether the location specified by the `latitude` and `longitude` is in nighttime on `date` From 9d30448f802bfe1feb10108dc567f892d1f719c9 Mon Sep 17 00:00:00 2001 From: Pehon1 Date: Mon, 4 May 2020 21:55:13 +0800 Subject: [PATCH 2/4] Update Solar.swift fixed compatibility issues --- Solar/Solar.swift | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) diff --git a/Solar/Solar.swift b/Solar/Solar.swift index 34955b2..b244b20 100644 --- a/Solar/Solar.swift +++ b/Solar/Solar.swift @@ -218,23 +218,11 @@ extension Solar { let todaySunset = sunset.timeIntervalSince1970 let currentTime = self.date.timeIntervalSince1970 - var yesterday = Date() - if #available(iOSApplicationExtension 13.0, *) { - yesterday = date.advanced(by: TimeInterval(exactly: -86400.0)!) - } else { - - yesterday = date.addingTimeInterval(TimeInterval(exactly: -86400.0)!) - } + let yesterday = date.addingTimeInterval(TimeInterval(exactly: -86400.0)!) let yesterdaySunrise = calculate(.sunrise, for: yesterday, and: .official)?.timeIntervalSince1970 let yesterdaySunset = calculate(.sunset, for: yesterday, and: .official)?.timeIntervalSince1970 - var tomorrow = Date() - if #available(iOSApplicationExtension 13.0, *) { - tomorrow = date.advanced(by: TimeInterval(exactly: 86400.0)!) - } else { - tomorrow = date.addingTimeInterval(TimeInterval(exactly: 86400.0)!) - } - + let tomorrow = date.addingTimeInterval(TimeInterval(exactly: 86400.0)!) let tomorrowSunrise = calculate(.sunrise, for: tomorrow, and: .official)?.timeIntervalSince1970 let tomorrowSunSet = calculate(.sunset, for: tomorrow, and: .official)?.timeIntervalSince1970 From 5ac2b1b5b7dd69812b6f62631e78851d01055cb8 Mon Sep 17 00:00:00 2001 From: Mateusz Mackowiak Date: Sun, 7 Jun 2020 23:18:24 +0200 Subject: [PATCH 3/4] SPM support --- .../contents.xcworkspacedata | 7 + .../xcshareddata/IDETemplateMacros.plist | 11 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/xcschemes/Solar.xcscheme | 91 ++ Package.swift | 17 + README.md | 4 +- Solar iOSTests/CorrectResults.json | 1423 ---------------- Solar iOSTests/CorrectResults.swift | 1432 +++++++++++++++++ Solar iOSTests/Solar_iOSTests.swift | 6 +- Solar.xcodeproj/project.pbxproj | 14 +- .../xcshareddata/IDEWorkspaceChecks.plist | 8 + 11 files changed, 1584 insertions(+), 1437 deletions(-) create mode 100644 .swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata create mode 100644 .swiftpm/xcode/package.xcworkspace/xcshareddata/IDETemplateMacros.plist create mode 100644 .swiftpm/xcode/package.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 .swiftpm/xcode/xcshareddata/xcschemes/Solar.xcscheme create mode 100644 Package.swift delete mode 100644 Solar iOSTests/CorrectResults.json create mode 100644 Solar iOSTests/CorrectResults.swift create mode 100644 Solar.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata b/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/.swiftpm/xcode/package.xcworkspace/xcshareddata/IDETemplateMacros.plist b/.swiftpm/xcode/package.xcworkspace/xcshareddata/IDETemplateMacros.plist new file mode 100644 index 0000000..2a6fb1e --- /dev/null +++ b/.swiftpm/xcode/package.xcworkspace/xcshareddata/IDETemplateMacros.plist @@ -0,0 +1,11 @@ + + + + + FILEHEADER + +// Created on ___DATE___. +// ___COPYRIGHT___ +// + + diff --git a/.swiftpm/xcode/package.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/.swiftpm/xcode/package.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/.swiftpm/xcode/package.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/.swiftpm/xcode/xcshareddata/xcschemes/Solar.xcscheme b/.swiftpm/xcode/xcshareddata/xcschemes/Solar.xcscheme new file mode 100644 index 0000000..2bd28fe --- /dev/null +++ b/.swiftpm/xcode/xcshareddata/xcschemes/Solar.xcscheme @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Package.swift b/Package.swift new file mode 100644 index 0000000..a751ff8 --- /dev/null +++ b/Package.swift @@ -0,0 +1,17 @@ +// swift-tools-version:5.2 +// The swift-tools-version declares the minimum version of Swift required to build this package. + +import PackageDescription + +let package = Package( + name: "Solar", + platforms: [.iOS(.v8), .macOS(.v10_15), .watchOS(.v4), .tvOS(.v11)], + products: [ + .library(name: "Solar", type: .dynamic, targets: ["Solar"]), + ], + dependencies: [], + targets: [ + .target(name: "Solar", path: "Solar"), + .testTarget(name: "Solar Tests", dependencies: ["Solar"], path: "Solar iOSTests"), + ] +) diff --git a/README.md b/README.md index 147e106..f3d9920 100644 --- a/README.md +++ b/README.md @@ -4,8 +4,8 @@ # Solar -[![Version](https://img.shields.io/cocoapods/v/Solar.svg?style=flat)](http://cocoapods.org/pods/Solar) [![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage) [![Build Status](https://travis-ci.org/ceeK/Solar.svg?branch=master)](https://travis-ci.org/ceeK/Solar) - [![MIT licensed](https://img.shields.io/badge/license-MIT-blue.svg)](https://raw.githubusercontent.com/hyperium/hyper/master/LICENSE) +[![Version](https://img.shields.io/cocoapods/v/Solar.svg?style=flat)](http://cocoapods.org/pods/Solar) [![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage) [![POD compatible](https://img.shields.io/badge/Cocoapods-compatible-4BC51D.svg?style=flat)](https://cocoapods.org) [![SPM compatible](https://img.shields.io/badge/SPM-compatible-4BC51D.svg?style=flat)](https://swift.org/package-manager/) [![Build Status](https://travis-ci.org/ceeK/Solar.svg?branch=master)](https://travis-ci.org/ceeK/Solar) +[![MIT licensed](https://img.shields.io/badge/license-MIT-blue.svg)](https://raw.githubusercontent.com/hyperium/hyper/master/LICENSE) A Swift helper for generating Sunrise and Sunset times. diff --git a/Solar iOSTests/CorrectResults.json b/Solar iOSTests/CorrectResults.json deleted file mode 100644 index 56c47bf..0000000 --- a/Solar iOSTests/CorrectResults.json +++ /dev/null @@ -1,1423 +0,0 @@ - [{ - "city": "Abu Dhabi", - "latitude": 24.46667, - "longitude": 54.36667, - "sunrise": "2017-02-09T02:59:40+00:00", - "sunset": "2017-02-09T14:13:47+00:00" - }, { - "city": "Abuja", - "latitude": 9.05735, - "longitude": 7.48976, - "sunrise": "2017-02-09T05:50:01+00:00", - "sunset": "2017-02-09T17:38:27+00:00" - }, { - "city": "Accra", - "latitude": 5.55602, - "longitude": -0.1969, - "sunrise": "2017-02-09T06:17:09+00:00", - "sunset": "2017-02-09T18:12:49+00:00" - }, { - "city": "Adamstown", - "latitude": -25.06597, - "longitude": -130.10147, - "sunrise": "2017-02-09T14:23:26+00:00", - "sunset": "2017-02-10T03:25:47+00:00" - }, { - "city": "Addis Ababa", - "latitude": 9.02497, - "longitude": 38.74689, - "sunrise": "2017-02-09T03:44:59+00:00", - "sunset": "2017-02-09T15:33:26+00:00" - }, { - "city": "Algiers", - "latitude": 36.7525, - "longitude": 3.04197, - "sunrise": "2017-02-09T06:41:38+00:00", - "sunset": "2017-02-09T17:22:25+00:00" - }, { - "city": "Alofi", - "latitude": -19.05952, - "longitude": -169.91867, - "sunrise": "2017-02-09T17:10:04+00:00", - "sunset": "2017-02-10T05:57:41+00:00" - }, { - "city": "Amman", - "latitude": 31.95522, - "longitude": 35.94503, - "sunrise": "2017-02-09T04:23:02+00:00", - "sunset": "2017-02-09T15:17:47+00:00" - }, { - "city": "Amsterdam", - "latitude": 52.37403, - "longitude": 4.88969, - "sunrise": "2017-02-09T07:06:08+00:00", - "sunset": "2017-02-09T16:43:09+00:00" - }, { - "city": "Andorra la Vella", - "latitude": 42.50779, - "longitude": 1.52109, - "sunrise": "2017-02-09T06:57:28+00:00", - "sunset": "2017-02-09T17:18:45+00:00" - }, { - "city": "Ankara", - "latitude": 39.91987, - "longitude": 32.85427, - "sunrise": "2017-02-09T04:47:39+00:00", - "sunset": "2017-02-09T15:17:54+00:00" - }, { - "city": "Antananarivo", - "latitude": -18.91433, - "longitude": 47.53098, - "sunrise": "2017-02-09T02:40:08+00:00", - "sunset": "2017-02-09T15:28:00+00:00" - }, { - "city": "Apia", - "latitude": -13.83333, - "longitude": -171.76666, - "sunrise": "2017-02-09T17:23:21+00:00", - "sunset": "2017-02-10T05:59:12+00:00" - }, { - "city": "Ashgabat", - "latitude": 37.95, - "longitude": 58.38333, - "sunrise": "2017-02-09T03:02:20+00:00", - "sunset": "2017-02-09T13:38:59+00:00" - }, { - "city": "Asmara", - "latitude": 15.33333, - "longitude": 38.93333, - "sunrise": "2017-02-09T03:50:56+00:00", - "sunset": "2017-02-09T15:25:59+00:00" - }, { - "city": "Astana", - "latitude": 51.1801, - "longitude": 71.44598, - "sunrise": "2017-02-09T02:37:03+00:00", - "sunset": "2017-02-09T12:19:47+00:00" - }, { - "city": "Asunci??n", - "latitude": -25.30066, - "longitude": -57.63591, - "sunrise": "2017-02-09T09:33:08+00:00", - "sunset": "2017-02-09T22:36:22+00:00" - }, { - "city": "Athens", - "latitude": 37.97945, - "longitude": 23.71622, - "sunrise": "2017-02-09T05:20:57+00:00", - "sunset": "2017-02-09T15:57:43+00:00" - }, { - "city": "Avarua", - "latitude": -21.20778, - "longitude": -159.775, - "sunrise": "2017-02-09T16:26:57+00:00", - "sunset": "2017-02-10T05:19:39+00:00" - }, { - "city": "Baghdad", - "latitude": 33.34058, - "longitude": 44.40088, - "sunrise": "2017-02-09T03:51:12+00:00", - "sunset": "2017-02-09T14:41:59+00:00" - }, { - "city": "Baku", - "latitude": 40.37767, - "longitude": 49.89201, - "sunrise": "2017-02-09T03:40:20+00:00", - "sunset": "2017-02-09T14:08:55+00:00" - }, { - "city": "Bamako", - "latitude": 12.65, - "longitude": -8, - "sunrise": "2017-02-09T06:55:45+00:00", - "sunset": "2017-02-09T18:36:39+00:00" - }, { - "city": "Bandar Seri Begawan", - "latitude": 4.94029, - "longitude": 114.94806, - "sunrise": "2017-02-08T22:35:58+00:00", - "sunset": "2017-02-09T10:32:50+00:00" - }, { - "city": "Bangkok", - "latitude": 13.75, - "longitude": 100.51667, - "sunrise": "2017-02-08T23:42:57+00:00", - "sunset": "2017-02-09T11:21:18+00:00" - }, { - "city": "Bangui", - "latitude": 4.36122, - "longitude": 18.55496, - "sunrise": "2017-02-09T05:00:55+00:00", - "sunset": "2017-02-09T16:59:02+00:00" - }, { - "city": "Banjul", - "latitude": 13.45274, - "longitude": -16.57803, - "sunrise": "2017-02-09T07:30:54+00:00", - "sunset": "2017-02-09T19:10:07+00:00" - }, { - "city": "Basseterre", - "latitude": 17.29484, - "longitude": -62.7261, - "sunrise": "2017-02-09T10:39:37+00:00", - "sunset": "2017-02-09T22:10:36+00:00" - }, { - "city": "Basse-Terre", - "latitude": 15.99854, - "longitude": -61.72548, - "sunrise": "2017-02-09T10:34:11+00:00", - "sunset": "2017-02-09T22:08:01+00:00" - }, { - "city": "Beijing", - "latitude": 39.9075, - "longitude": 116.39723, - "sunrise": "2017-02-08T23:13:43+00:00", - "sunset": "2017-02-09T09:43:29+00:00" - }, { - "city": "Beirut", - "latitude": 33.88894, - "longitude": 35.49442, - "sunrise": "2017-02-09T04:27:36+00:00", - "sunset": "2017-02-09T15:16:50+00:00" - }, { - "city": "Belgrade", - "latitude": 44.80401, - "longitude": 20.46513, - "sunrise": "2017-02-09T05:46:11+00:00", - "sunset": "2017-02-09T15:58:29+00:00" - }, { - "city": "Belmopan", - "latitude": 17.25, - "longitude": -88.76667, - "sunrise": "2017-02-09T12:23:42+00:00", - "sunset": "2017-02-09T23:54:50+00:00" - }, { - "city": "Berlin", - "latitude": 52.52437, - "longitude": 13.41053, - "sunrise": "2017-02-09T06:32:30+00:00", - "sunset": "2017-02-09T16:08:36+00:00" - }, { - "city": "Bern", - "latitude": 46.94809, - "longitude": 7.44744, - "sunrise": "2017-02-09T06:42:41+00:00", - "sunset": "2017-02-09T16:46:08+00:00" - }, { - "city": "Bishkek", - "latitude": 42.87306, - "longitude": 74.60028, - "sunrise": "2017-02-09T02:06:06+00:00", - "sunset": "2017-02-09T12:25:29+00:00" - }, { - "city": "Bissau", - "latitude": 11.85, - "longitude": -15.58333, - "sunrise": "2017-02-09T07:25:13+00:00", - "sunset": "2017-02-09T19:07:50+00:00" - }, { - "city": "Bogot?�", - "latitude": 4.60971, - "longitude": -74.08175, - "sunrise": "2017-02-09T11:11:42+00:00", - "sunset": "2017-02-09T23:09:21+00:00" - }, { - "city": "Bras??lia", - "latitude": -15.77972, - "longitude": -47.92972, - "sunrise": "2017-02-09T09:05:42+00:00", - "sunset": "2017-02-09T21:46:08+00:00" - }, { - "city": "Bratislava", - "latitude": 48.14816, - "longitude": 17.10674, - "sunrise": "2017-02-09T06:06:45+00:00", - "sunset": "2017-02-09T16:04:47+00:00" - }, { - "city": "Brazzaville", - "latitude": -4.2669, - "longitude": 15.28327, - "sunrise": "2017-02-09T05:05:09+00:00", - "sunset": "2017-02-09T17:20:59+00:00" - }, { - "city": "Bridgetown", - "latitude": 13.1, - "longitude": -59.61667, - "sunrise": "2017-02-09T10:22:39+00:00", - "sunset": "2017-02-09T22:02:41+00:00" - }, { - "city": "Brussels", - "latitude": 50.85045, - "longitude": 4.34878, - "sunrise": "2017-02-09T07:04:15+00:00", - "sunset": "2017-02-09T16:49:21+00:00" - }, { - "city": "Bucure�?ti", - "latitude": 44.43225, - "longitude": 26.10626, - "sunrise": "2017-02-09T05:22:54+00:00", - "sunset": "2017-02-09T15:36:38+00:00" - }, { - "city": "Budapest", - "latitude": 47.49801, - "longitude": 19.03991, - "sunrise": "2017-02-09T05:57:34+00:00", - "sunset": "2017-02-09T15:58:30+00:00" - }, { - "city": "Buenos Aires", - "latitude": -34.61315, - "longitude": -58.37723, - "sunrise": "2017-02-09T09:22:49+00:00", - "sunset": "2017-02-09T22:52:36+00:00" - }, { - "city": "Bujumbura", - "latitude": -3.37611, - "longitude": 29.36, - "sunrise": "2017-02-09T04:09:45+00:00", - "sunset": "2017-02-09T16:23:45+00:00" - }, { - "city": "Cairo", - "latitude": 30.06263, - "longitude": 31.24967, - "sunrise": "2017-02-09T04:39:14+00:00", - "sunset": "2017-02-09T15:39:10+00:00" - }, { - "city": "Canberra", - "latitude": -35.28346, - "longitude": 149.12807, - "sunrise": "2017-02-08T19:31:08+00:00", - "sunset": "2017-02-09T09:04:13+00:00" - }, { - "city": "Caracas", - "latitude": 10.5, - "longitude": -66.91667, - "sunrise": "2017-02-09T10:49:06+00:00", - "sunset": "2017-02-09T22:34:37+00:00" - }, { - "city": "Castries", - "latitude": 13.9957, - "longitude": -61.00614, - "sunrise": "2017-02-09T10:29:09+00:00", - "sunset": "2017-02-09T22:07:17+00:00" - }, { - "city": "Cayenne", - "latitude": 4.93333, - "longitude": -52.33333, - "sunrise": "2017-02-09T09:45:02+00:00", - "sunset": "2017-02-09T21:42:01+00:00" - }, { - "city": "Charlotte Amalie", - "latitude": 18.3419, - "longitude": -64.9307, - "sunrise": "2017-02-09T10:49:35+00:00", - "sunset": "2017-02-09T22:18:16+00:00" - }, { - "city": "Chi�?in��u", - "latitude": 47.00556, - "longitude": 28.8575, - "sunrise": "2017-02-09T05:17:15+00:00", - "sunset": "2017-02-09T15:20:16+00:00" - }, { - "city": "Cockburn Town", - "latitude": 21.46122, - "longitude": -71.14188, - "sunrise": "2017-02-09T11:17:57+00:00", - "sunset": "2017-02-09T22:39:35+00:00" - }, { - "city": "Colombo", - "latitude": 6.93194, - "longitude": 79.84778, - "sunrise": "2017-02-09T00:58:25+00:00", - "sunset": "2017-02-09T12:51:11+00:00" - }, { - "city": "Conakry", - "latitude": 9.53795, - "longitude": -13.67729, - "sunrise": "2017-02-09T07:15:11+00:00", - "sunset": "2017-02-09T19:02:38+00:00" - }, { - "city": "Copenhagen", - "latitude": 55.67594, - "longitude": 12.56553, - "sunrise": "2017-02-09T06:45:21+00:00", - "sunset": "2017-02-09T16:02:31+00:00" - }, { - "city": "Dakar", - "latitude": 14.6937, - "longitude": -17.44406, - "sunrise": "2017-02-09T07:35:42+00:00", - "sunset": "2017-02-09T19:12:15+00:00" - }, { - "city": "Damascus", - "latitude": 33.5102, - "longitude": 36.29128, - "sunrise": "2017-02-09T04:23:52+00:00", - "sunset": "2017-02-09T15:14:12+00:00" - }, { - "city": "Dhaka", - "latitude": 23.7104, - "longitude": 90.40744, - "sunrise": "2017-02-09T00:34:39+00:00", - "sunset": "2017-02-09T11:50:28+00:00" - }, { - "city": "Dili", - "latitude": -8.55861, - "longitude": 125.57361, - "sunrise": "2017-02-08T21:39:25+00:00", - "sunset": "2017-02-09T10:04:22+00:00" - }, { - "city": "Djibouti", - "latitude": 11.58767, - "longitude": 43.14468, - "sunrise": "2017-02-09T03:30:05+00:00", - "sunset": "2017-02-09T15:13:09+00:00" - }, { - "city": "Dodoma", - "latitude": -6.17486, - "longitude": 35.73792, - "sunrise": "2017-02-09T03:41:20+00:00", - "sunset": "2017-02-09T16:01:09+00:00" - }, { - "city": "Doha", - "latitude": 25.27932, - "longitude": 51.52245, - "sunrise": "2017-02-09T03:12:02+00:00", - "sunset": "2017-02-09T14:24:10+00:00" - }, { - "city": "Douglas", - "latitude": 54.15, - "longitude": -4.48333, - "sunrise": "2017-02-09T07:48:40+00:00", - "sunset": "2017-02-09T17:15:35+00:00" - }, { - "city": "Dublin", - "latitude": 53.34399, - "longitude": -6.26719, - "sunrise": "2017-02-09T07:53:26+00:00", - "sunset": "2017-02-09T17:25:06+00:00" - }, { - "city": "Dushanbe", - "latitude": 38.53575, - "longitude": 68.77905, - "sunrise": "2017-02-09T02:21:44+00:00", - "sunset": "2017-02-09T12:56:25+00:00" - }, { - "city": "Flying Fish Cove", - "latitude": -10.42172, - "longitude": 105.67912, - "sunrise": "2017-02-08T22:57:01+00:00", - "sunset": "2017-02-09T11:25:56+00:00" - }, { - "city": "Fort-de-France", - "latitude": 14.60892, - "longitude": -61.07334, - "sunrise": "2017-02-09T10:30:05+00:00", - "sunset": "2017-02-09T22:06:54+00:00" - }, { - "city": "Freetown", - "latitude": 8.484, - "longitude": -13.22994, - "sunrise": "2017-02-09T07:12:18+00:00", - "sunset": "2017-02-09T19:01:56+00:00" - }, { - "city": "Funafuti", - "latitude": -8.52425, - "longitude": 179.19417, - "sunrise": "2017-02-08T18:04:57+00:00", - "sunset": "2017-02-09T06:29:53+00:00" - }, { - "city": "Gaborone", - "latitude": -24.65451, - "longitude": 25.90859, - "sunrise": "2017-02-09T03:59:37+00:00", - "sunset": "2017-02-09T17:01:30+00:00" - }, { - "city": "George Town", - "latitude": 19.28692, - "longitude": -81.36706, - "sunrise": "2017-02-09T11:56:22+00:00", - "sunset": "2017-02-09T23:22:58+00:00" - }, { - "city": "Georgetown", - "latitude": 6.80448, - "longitude": -58.15527, - "sunrise": "2017-02-09T10:10:15+00:00", - "sunset": "2017-02-09T22:03:24+00:00" - }, { - "city": "Gibraltar", - "latitude": 36.14474, - "longitude": -5.35257, - "sunrise": "2017-02-09T07:14:15+00:00", - "sunset": "2017-02-09T17:56:58+00:00" - }, { - "city": "Grytviken", - "latitude": -54.28111, - "longitude": -36.5092, - "sunrise": "2017-02-09T07:10:34+00:00", - "sunset": "2017-02-09T22:09:54+00:00" - }, { - "city": "Guatemala City", - "latitude": 14.64072, - "longitude": -90.51327, - "sunrise": "2017-02-09T12:27:51+00:00", - "sunset": "2017-02-10T00:04:39+00:00" - }, { - "city": "Gustavia", - "latitude": 17.89618, - "longitude": -62.84978, - "sunrise": "2017-02-09T10:40:46+00:00", - "sunset": "2017-02-09T22:10:26+00:00" - }, { - "city": "H?� N��?i", - "latitude": 21.0245, - "longitude": 105.84117, - "sunrise": "2017-02-08T23:29:46+00:00", - "sunset": "2017-02-09T10:51:53+00:00" - }, { - "city": "Hag?�t?�a", - "latitude": 13.47417, - "longitude": 144.74778, - "sunrise": "2017-02-08T20:45:46+00:00", - "sunset": "2017-02-09T08:24:38+00:00" - }, { - "city": "Hamilton", - "latitude": 32.29149, - "longitude": -64.77797, - "sunrise": "2017-02-09T11:06:10+00:00", - "sunset": "2017-02-09T22:00:27+00:00" - }, { - "city": "Harare", - "latitude": -17.82935, - "longitude": 31.05389, - "sunrise": "2017-02-09T03:47:20+00:00", - "sunset": "2017-02-09T16:32:37+00:00" - }, { - "city": "Havana", - "latitude": 23.13302, - "longitude": -82.38304, - "sunrise": "2017-02-09T12:04:51+00:00", - "sunset": "2017-02-09T23:22:37+00:00" - }, { - "city": "Helsinki", - "latitude": 60.16952, - "longitude": 24.93545, - "sunrise": "2017-02-09T06:12:49+00:00", - "sunset": "2017-02-09T14:56:06+00:00" - }, { - "city": "Hong Kong", - "latitude": 22.28552, - "longitude": 114.15769, - "sunrise": "2017-02-08T22:58:00+00:00", - "sunset": "2017-02-09T10:17:08+00:00" - }, { - "city": "Honiara", - "latitude": -9.43333, - "longitude": 159.95, - "sunrise": "2017-02-08T19:20:58+00:00", - "sunset": "2017-02-09T07:47:49+00:00" - }, { - "city": "Isl��m��b��d", - "latitude": 33.72148, - "longitude": 73.04329, - "sunrise": "2017-02-09T01:57:15+00:00", - "sunset": "2017-02-09T12:46:47+00:00" - }, { - "city": "Jakarta", - "latitude": -6.21462, - "longitude": 106.84513, - "sunrise": "2017-02-08T22:56:50+00:00", - "sunset": "2017-02-09T11:16:47+00:00" - }, { - "city": "Jamestown", - "latitude": -15.93872, - "longitude": -5.71675, - "sunrise": "2017-02-09T06:16:38+00:00", - "sunset": "2017-02-09T18:57:30+00:00" - }, { - "city": "Kabul", - "latitude": 34.52813, - "longitude": 69.17233, - "sunrise": "2017-02-09T02:13:55+00:00", - "sunset": "2017-02-09T13:01:06+00:00" - }, { - "city": "Kampala", - "latitude": 0.31628, - "longitude": 32.58219, - "sunrise": "2017-02-09T04:00:40+00:00", - "sunset": "2017-02-09T16:07:04+00:00" - }, { - "city": "Kathmandu", - "latitude": 27.70169, - "longitude": 85.3206, - "sunrise": "2017-02-09T00:59:57+00:00", - "sunset": "2017-02-09T12:05:52+00:00" - }, { - "city": "Khartoum", - "latitude": 15.54665, - "longitude": 32.53361, - "sunrise": "2017-02-09T04:16:46+00:00", - "sunset": "2017-02-09T15:51:22+00:00" - }, { - "city": "Kiev", - "latitude": 50.45466, - "longitude": 30.5238, - "sunrise": "2017-02-09T05:18:40+00:00", - "sunset": "2017-02-09T15:05:32+00:00" - }, { - "city": "Kigali", - "latitude": -1.94995, - "longitude": 30.05885, - "sunrise": "2017-02-09T04:08:26+00:00", - "sunset": "2017-02-09T16:19:29+00:00" - }, { - "city": "Kingston", - "latitude": -29.05459, - "longitude": 167.96628, - "sunrise": "2017-02-08T18:25:11+00:00", - "sunset": "2017-02-09T07:39:28+00:00" - }, { - "city": "Kingston", - "latitude": 17.99702, - "longitude": -76.79358, - "sunrise": "2017-02-09T11:36:38+00:00", - "sunset": "2017-02-09T23:06:07+00:00" - }, { - "city": "Kingstown", - "latitude": 13.15872, - "longitude": -61.22475, - "sunrise": "2017-02-09T10:29:08+00:00", - "sunset": "2017-02-09T22:09:03+00:00" - }, { - "city": "Kinshasa", - "latitude": -4.32459, - "longitude": 15.32146, - "sunrise": "2017-02-09T05:04:56+00:00", - "sunset": "2017-02-09T17:20:53+00:00" - }, { - "city": "Kuala Lumpur", - "latitude": 3.1412, - "longitude": 101.68653, - "sunrise": "2017-02-08T23:27:09+00:00", - "sunset": "2017-02-09T11:27:44+00:00" - }, { - "city": "Kuwait", - "latitude": 29.36972, - "longitude": 47.97833, - "sunrise": "2017-02-09T03:31:26+00:00", - "sunset": "2017-02-09T14:33:08+00:00" - }, { - "city": "La Paz", - "latitude": -16.5, - "longitude": -68.15, - "sunrise": "2017-02-09T10:25:48+00:00", - "sunset": "2017-02-09T23:07:48+00:00" - }, { - "city": "Libreville", - "latitude": 0.38333, - "longitude": 9.45, - "sunrise": "2017-02-09T05:33:16+00:00", - "sunset": "2017-02-09T17:39:32+00:00" - }, { - "city": "Lilongwe", - "latitude": -13.98333, - "longitude": 33.78333, - "sunrise": "2017-02-09T03:40:46+00:00", - "sunset": "2017-02-09T16:17:21+00:00" - }, { - "city": "Lima", - "latitude": -12.04318, - "longitude": -77.02824, - "sunrise": "2017-02-09T11:06:15+00:00", - "sunset": "2017-02-09T23:38:23+00:00" - }, { - "city": "Lisbon", - "latitude": 38.71667, - "longitude": -9.13333, - "sunrise": "2017-02-09T07:33:27+00:00", - "sunset": "2017-02-09T18:08:01+00:00" - }, { - "city": "Ljubljana", - "latitude": 46.05108, - "longitude": 14.50513, - "sunrise": "2017-02-09T06:12:34+00:00", - "sunset": "2017-02-09T16:19:47+00:00" - }, { - "city": "Lom??", - "latitude": 6.13748, - "longitude": 1.21227, - "sunrise": "2017-02-09T06:12:07+00:00", - "sunset": "2017-02-09T18:06:35+00:00" - }, { - "city": "London", - "latitude": 51.50853, - "longitude": -0.12574, - "sunrise": "2017-02-09T07:23:50+00:00", - "sunset": "2017-02-09T17:05:34+00:00" - }, { - "city": "Luanda", - "latitude": -8.83833, - "longitude": 13.23444, - "sunrise": "2017-02-09T05:08:33+00:00", - "sunset": "2017-02-09T17:33:57+00:00" - }, { - "city": "Lusaka", - "latitude": -15.40809, - "longitude": 28.28636, - "sunrise": "2017-02-09T04:01:10+00:00", - "sunset": "2017-02-09T16:40:55+00:00" - }, { - "city": "Luxembourg", - "latitude": 49.61167, - "longitude": 6.13, - "sunrise": "2017-02-09T06:54:03+00:00", - "sunset": "2017-02-09T16:45:18+00:00" - }, { - "city": "Macau", - "latitude": 22.20056, - "longitude": 113.54611, - "sunrise": "2017-02-08T23:00:20+00:00", - "sunset": "2017-02-09T10:19:40+00:00" - }, { - "city": "Madrid", - "latitude": 40.4165, - "longitude": -3.70256, - "sunrise": "2017-02-09T07:14:37+00:00", - "sunset": "2017-02-09T17:43:24+00:00" - }, { - "city": "Majuro", - "latitude": 7.08971, - "longitude": 171.38027, - "sunrise": "2017-02-08T18:52:29+00:00", - "sunset": "2017-02-09T06:44:51+00:00" - }, { - "city": "Malabo", - "latitude": 3.75, - "longitude": 8.78333, - "sunrise": "2017-02-09T05:39:23+00:00", - "sunset": "2017-02-09T17:38:45+00:00" - }, { - "city": "Male", - "latitude": 4.1748, - "longitude": 73.50888, - "sunrise": "2017-02-09T01:20:55+00:00", - "sunset": "2017-02-09T13:19:23+00:00" - }, { - "city": "Mamoudzou", - "latitude": -12.77944, - "longitude": 45.22722, - "sunrise": "2017-02-09T02:56:19+00:00", - "sunset": "2017-02-09T15:30:15+00:00" - }, { - "city": "Managua", - "latitude": 12.13282, - "longitude": -86.2504, - "sunrise": "2017-02-09T12:08:08+00:00", - "sunset": "2017-02-09T23:50:16+00:00" - }, { - "city": "Manama", - "latitude": 26.21536, - "longitude": 50.5832, - "sunrise": "2017-02-09T03:16:57+00:00", - "sunset": "2017-02-09T14:26:46+00:00" - }, { - "city": "Manila", - "latitude": 14.6042, - "longitude": 120.9822, - "sunrise": "2017-02-08T22:22:02+00:00", - "sunset": "2017-02-09T09:58:30+00:00" - }, { - "city": "Maputo", - "latitude": -25.96528, - "longitude": 32.58917, - "sunrise": "2017-02-09T03:31:11+00:00", - "sunset": "2017-02-09T16:36:29+00:00" - }, { - "city": "Mariehamn", - "latitude": 60.09726, - "longitude": 19.93481, - "sunrise": "2017-02-09T06:32:28+00:00", - "sunset": "2017-02-09T15:16:27+00:00" - }, { - "city": "Marigot", - "latitude": 18.06667, - "longitude": -63.08333, - "sunrise": "2017-02-09T10:41:53+00:00", - "sunset": "2017-02-09T22:11:10+00:00" - }, { - "city": "Maseru", - "latitude": -29.31667, - "longitude": 27.48333, - "sunrise": "2017-02-09T03:47:04+00:00", - "sunset": "2017-02-09T17:01:28+00:00" - }, { - "city": "Mat?�'utu", - "latitude": -13.28163, - "longitude": -176.17453, - "sunrise": "2017-02-09T17:41:35+00:00", - "sunset": "2017-02-10T06:16:13+00:00" - }, { - "city": "Mbabane", - "latitude": -26.31667, - "longitude": 31.13333, - "sunrise": "2017-02-09T03:36:33+00:00", - "sunset": "2017-02-09T16:42:47+00:00" - }, { - "city": "Mexico City", - "latitude": 19.42847, - "longitude": -99.12766, - "sunrise": "2017-02-09T13:07:33+00:00", - "sunset": "2017-02-10T00:33:53+00:00" - }, { - "city": "Minsk", - "latitude": 53.9, - "longitude": 27.56667, - "sunrise": "2017-02-09T05:39:54+00:00", - "sunset": "2017-02-09T15:07:57+00:00" - }, { - "city": "Mogadishu", - "latitude": 2.03711, - "longitude": 45.34375, - "sunrise": "2017-02-09T03:11:23+00:00", - "sunset": "2017-02-09T15:14:15+00:00" - }, { - "city": "Monaco", - "latitude": 43.73333, - "longitude": 7.41667, - "sunrise": "2017-02-09T06:36:14+00:00", - "sunset": "2017-02-09T16:52:50+00:00" - }, { - "city": "Monrovia", - "latitude": 6.30054, - "longitude": -10.7969, - "sunrise": "2017-02-09T07:00:19+00:00", - "sunset": "2017-02-09T18:54:27+00:00" - }, { - "city": "Montevideo", - "latitude": -34.83346, - "longitude": -56.16735, - "sunrise": "2017-02-09T09:13:37+00:00", - "sunset": "2017-02-09T22:44:07+00:00" - }, { - "city": "Moroni", - "latitude": -11.70216, - "longitude": 43.25506, - "sunrise": "2017-02-09T03:05:23+00:00", - "sunset": "2017-02-09T15:36:58+00:00" - }, { - "city": "Moscow", - "latitude": 55.75222, - "longitude": 37.61556, - "sunrise": "2017-02-09T05:05:33+00:00", - "sunset": "2017-02-09T14:21:55+00:00" - }, { - "city": "Muscat", - "latitude": 23.61333, - "longitude": 58.59333, - "sunrise": "2017-02-09T02:41:45+00:00", - "sunset": "2017-02-09T13:57:54+00:00" - }, { - "city": "Nairobi", - "latitude": -1.28333, - "longitude": 36.81667, - "sunrise": "2017-02-09T03:42:05+00:00", - "sunset": "2017-02-09T15:51:46+00:00" - }, { - "city": "Nassau", - "latitude": 25.05823, - "longitude": -77.34306, - "sunrise": "2017-02-09T11:47:00+00:00", - "sunset": "2017-02-09T23:00:08+00:00" - }, { - "city": "Nay Pyi Taw", - "latitude": 19.745, - "longitude": 96.12972, - "sunrise": "2017-02-09T00:07:08+00:00", - "sunset": "2017-02-09T11:32:13+00:00" - }, { - "city": "N'Djamena", - "latitude": 12.11058, - "longitude": 15.03479, - "sunrise": "2017-02-09T05:23:03+00:00", - "sunset": "2017-02-09T17:05:04+00:00" - }, { - "city": "New Delhi", - "latitude": 28.63576, - "longitude": 77.22445, - "sunrise": "2017-02-09T01:33:32+00:00", - "sunset": "2017-02-09T12:37:03+00:00" - }, { - "city": "Ngerulmud", - "latitude": 7.50043, - "longitude": 134.62355, - "sunrise": "2017-02-08T21:19:56+00:00", - "sunset": "2017-02-09T09:11:28+00:00" - }, { - "city": "Niamey", - "latitude": 13.5125, - "longitude": 2.11178, - "sunrise": "2017-02-09T06:16:13+00:00", - "sunset": "2017-02-09T17:55:16+00:00" - }, { - "city": "Nicosia", - "latitude": 35.16667, - "longitude": 33.36667, - "sunrise": "2017-02-09T04:38:00+00:00", - "sunset": "2017-02-09T15:23:28+00:00" - }, { - "city": "Nouakchott", - "latitude": 18.10033, - "longitude": -15.94975, - "sunrise": "2017-02-09T07:33:27+00:00", - "sunset": "2017-02-09T19:02:32+00:00" - }, { - "city": "Noum??a", - "latitude": -22.27631, - "longitude": 166.4572, - "sunrise": "2017-02-08T18:40:11+00:00", - "sunset": "2017-02-09T07:36:32+00:00" - }, { - "city": "Nuku`alofa", - "latitude": -21.13333, - "longitude": -175.2, - "sunrise": "2017-02-09T17:28:46+00:00", - "sunset": "2017-02-10T06:21:15+00:00" - }, { - "city": "Nuuk", - "latitude": 64.18347, - "longitude": -51.72157, - "sunrise": "2017-02-09T11:38:57+00:00", - "sunset": "2017-02-09T19:43:13+00:00" - }, { - "city": "Oranjestad", - "latitude": 12.52398, - "longitude": -70.02703, - "sunrise": "2017-02-09T11:03:40+00:00", - "sunset": "2017-02-09T22:44:57+00:00" - }, { - "city": "Oslo", - "latitude": 59.91273, - "longitude": 10.74609, - "sunrise": "2017-02-09T07:08:22+00:00", - "sunset": "2017-02-09T15:54:03+00:00" - }, { - "city": "Ottawa", - "latitude": 45.41117, - "longitude": -75.69812, - "sunrise": "2017-02-09T12:11:42+00:00", - "sunset": "2017-02-09T22:22:17+00:00" - }, { - "city": "Ouagadougou", - "latitude": 12.36423, - "longitude": -1.53834, - "sunrise": "2017-02-09T06:29:36+00:00", - "sunset": "2017-02-09T18:11:06+00:00" - }, { - "city": "Pago Pago", - "latitude": -14.27806, - "longitude": -170.7025, - "sunrise": "2017-02-09T17:18:36+00:00", - "sunset": "2017-02-10T05:55:25+00:00" - }, { - "city": "Palikir - National Government Center", - "latitude": 6.92477, - "longitude": 158.16109, - "sunrise": "2017-02-08T19:45:11+00:00", - "sunset": "2017-02-09T07:37:54+00:00" - }, { - "city": "Panam?�", - "latitude": 8.9936, - "longitude": -79.51973, - "sunrise": "2017-02-09T11:37:57+00:00", - "sunset": "2017-02-09T23:26:37+00:00" - }, { - "city": "Papeete", - "latitude": -17.53333, - "longitude": -149.56667, - "sunrise": "2017-02-09T15:50:24+00:00", - "sunset": "2017-02-10T04:34:33+00:00" - }, { - "city": "Paramaribo", - "latitude": 5.86638, - "longitude": -55.16682, - "sunrise": "2017-02-09T09:57:20+00:00", - "sunset": "2017-02-09T21:52:24+00:00" - }, { - "city": "Paris", - "latitude": 48.85341, - "longitude": 2.3488, - "sunrise": "2017-02-09T07:07:21+00:00", - "sunset": "2017-02-09T17:02:15+00:00" - }, { - "city": "Philipsburg", - "latitude": 18.026, - "longitude": -63.04582, - "sunrise": "2017-02-09T10:41:42+00:00", - "sunset": "2017-02-09T22:11:04+00:00" - }, { - "city": "Phnom Penh", - "latitude": 11.56245, - "longitude": 104.91601, - "sunrise": "2017-02-08T23:23:01+00:00", - "sunset": "2017-02-09T11:06:03+00:00" - }, { - "city": "Plymouth", - "latitude": 16.70555, - "longitude": -62.21292, - "sunrise": "2017-02-09T10:36:55+00:00", - "sunset": "2017-02-09T22:09:11+00:00" - }, { - "city": "Podgorica", - "latitude": 42.44111, - "longitude": 19.26361, - "sunrise": "2017-02-09T05:46:27+00:00", - "sunset": "2017-02-09T16:07:50+00:00" - }, { - "city": "Port Louis", - "latitude": -20.16194, - "longitude": 57.49889, - "sunrise": "2017-02-09T01:58:46+00:00", - "sunset": "2017-02-09T14:49:37+00:00" - }, { - "city": "Port Moresby", - "latitude": -9.44314, - "longitude": 147.17972, - "sunrise": "2017-02-08T20:12:02+00:00", - "sunset": "2017-02-09T08:38:54+00:00" - }, { - "city": "Port-au-Prince", - "latitude": 18.53917, - "longitude": -72.335, - "sunrise": "2017-02-09T11:19:25+00:00", - "sunset": "2017-02-09T22:47:40+00:00" - }, { - "city": "Port-aux-Fran??ais", - "latitude": -49.35, - "longitude": 70.21667, - "sunrise": "2017-02-09T00:17:56+00:00", - "sunset": "2017-02-09T14:48:43+00:00" - }, { - "city": "Port-of-Spain", - "latitude": 10.66617, - "longitude": -61.51657, - "sunrise": "2017-02-09T10:27:41+00:00", - "sunset": "2017-02-09T22:12:51+00:00" - }, { - "city": "Porto-Novo", - "latitude": 6.49646, - "longitude": 2.60359, - "sunrise": "2017-02-09T06:06:55+00:00", - "sunset": "2017-02-09T18:00:39+00:00" - }, { - "city": "Port-Vila", - "latitude": -17.73381, - "longitude": 168.32188, - "sunrise": "2017-02-08T18:38:12+00:00", - "sunset": "2017-02-09T07:23:36+00:00" - }, { - "city": "Praha", - "latitude": 50.08804, - "longitude": 14.42076, - "sunrise": "2017-02-09T06:22:06+00:00", - "sunset": "2017-02-09T16:10:56+00:00" - }, { - "city": "Praia", - "latitude": 14.92148, - "longitude": -23.50868, - "sunrise": "2017-02-09T08:00:12+00:00", - "sunset": "2017-02-09T19:36:16+00:00" - }, { - "city": "Pretoria", - "latitude": -25.74486, - "longitude": 28.18783, - "sunrise": "2017-02-09T03:49:05+00:00", - "sunset": "2017-02-09T16:53:48+00:00" - }, { - "city": "Pristina", - "latitude": 42.67272, - "longitude": 21.16688, - "sunrise": "2017-02-09T05:39:16+00:00", - "sunset": "2017-02-09T15:59:47+00:00" - }, { - "city": "Pyongyang", - "latitude": 39.03385, - "longitude": 125.75432, - "sunrise": "2017-02-08T22:34:50+00:00", - "sunset": "2017-02-09T09:07:30+00:00" - }, { - "city": "Quito", - "latitude": -0.22985, - "longitude": -78.52495, - "sunrise": "2017-02-09T11:24:32+00:00", - "sunset": "2017-02-09T23:32:03+00:00" - }, { - "city": "Rabat", - "latitude": 34.01325, - "longitude": -6.83255, - "sunrise": "2017-02-09T07:16:59+00:00", - "sunset": "2017-02-09T18:06:04+00:00" - }, { - "city": "Reykjav??k", - "latitude": 64.13548, - "longitude": -21.89541, - "sunrise": "2017-02-09T09:39:38+00:00", - "sunset": "2017-02-09T17:43:56+00:00" - }, { - "city": "Riga", - "latitude": 56.946, - "longitude": 24.10589, - "sunrise": "2017-02-09T06:03:34+00:00", - "sunset": "2017-02-09T15:11:58+00:00" - }, { - "city": "Riyadh", - "latitude": 24.68773, - "longitude": 46.72185, - "sunrise": "2017-02-09T03:30:31+00:00", - "sunset": "2017-02-09T14:44:06+00:00" - }, { - "city": "Road Town", - "latitude": 18.41667, - "longitude": -64.61667, - "sunrise": "2017-02-09T10:48:25+00:00", - "sunset": "2017-02-09T22:16:55+00:00" - }, { - "city": "Roma", - "latitude": 41.89474, - "longitude": 12.4839, - "sunrise": "2017-02-09T06:12:32+00:00", - "sunset": "2017-02-09T16:35:59+00:00" - }, { - "city": "Roseau", - "latitude": 15.30174, - "longitude": -61.38808, - "sunrise": "2017-02-09T10:32:05+00:00", - "sunset": "2017-02-09T22:07:25+00:00" - }, { - "city": "S?�o Tom??", - "latitude": 0.33654, - "longitude": 6.72732, - "sunrise": "2017-02-09T05:44:06+00:00", - "sunset": "2017-02-09T17:50:28+00:00" - }, { - "city": "Saint George's", - "latitude": 12.05644, - "longitude": -61.74849, - "sunrise": "2017-02-09T10:30:04+00:00", - "sunset": "2017-02-09T22:12:19+00:00" - }, { - "city": "Saint Helier", - "latitude": 49.18333, - "longitude": -2.1, - "sunrise": "2017-02-09T07:25:54+00:00", - "sunset": "2017-02-09T17:19:17+00:00" - }, { - "city": "Saint John�??s", - "latitude": 17.11667, - "longitude": -61.85, - "sunrise": "2017-02-09T10:35:55+00:00", - "sunset": "2017-02-09T22:07:17+00:00" - }, { - "city": "Saint Peter Port", - "latitude": 49.45981, - "longitude": -2.53527, - "sunrise": "2017-02-09T07:28:18+00:00", - "sunset": "2017-02-09T17:20:22+00:00" - }, { - "city": "Saint-Denis", - "latitude": -20.88231, - "longitude": 55.4504, - "sunrise": "2017-02-09T02:06:06+00:00", - "sunset": "2017-02-09T14:58:41+00:00" - }, { - "city": "Saint-Pierre", - "latitude": 46.76544, - "longitude": -56.16949, - "sunrise": "2017-02-09T10:56:29+00:00", - "sunset": "2017-02-09T21:01:16+00:00" - }, { - "city": "San Jos??", - "latitude": 9.93333, - "longitude": -84.08333, - "sunrise": "2017-02-09T11:57:10+00:00", - "sunset": "2017-02-09T23:43:54+00:00" - }, { - "city": "San Juan", - "latitude": 18.46633, - "longitude": -66.10572, - "sunrise": "2017-02-09T10:54:25+00:00", - "sunset": "2017-02-09T22:22:49+00:00" - }, { - "city": "San Marino", - "latitude": 43.93333, - "longitude": 12.45, - "sunrise": "2017-02-09T06:16:30+00:00", - "sunset": "2017-02-09T16:32:17+00:00" - }, { - "city": "San Salvador", - "latitude": 13.68935, - "longitude": -89.18718, - "sunrise": "2017-02-09T12:21:32+00:00", - "sunset": "2017-02-10T00:00:22+00:00" - }, { - "city": "Sanaa", - "latitude": 15.35472, - "longitude": 44.20667, - "sunrise": "2017-02-09T03:29:52+00:00", - "sunset": "2017-02-09T15:04:52+00:00" - }, { - "city": "Santiago", - "latitude": -33.42628, - "longitude": -70.56656, - "sunrise": "2017-02-09T10:13:28+00:00", - "sunset": "2017-02-09T23:39:28+00:00" - }, { - "city": "Santo Domingo", - "latitude": 18.50012, - "longitude": -69.98857, - "sunrise": "2017-02-09T11:09:59+00:00", - "sunset": "2017-02-09T22:38:19+00:00" - }, { - "city": "Sarajevo", - "latitude": 43.84864, - "longitude": 18.35644, - "sunrise": "2017-02-09T05:52:44+00:00", - "sunset": "2017-02-09T16:08:48+00:00" - }, { - "city": "Seoul", - "latitude": 37.56826, - "longitude": 126.97783, - "sunrise": "2017-02-08T22:27:33+00:00", - "sunset": "2017-02-09T09:05:01+00:00" - }, { - "city": "Singapore", - "latitude": 1.28967, - "longitude": 103.85007, - "sunrise": "2017-02-08T23:16:36+00:00", - "sunset": "2017-02-09T11:20:59+00:00" - }, { - "city": "Skopje", - "latitude": 42, - "longitude": 21.43333, - "sunrise": "2017-02-09T05:36:58+00:00", - "sunset": "2017-02-09T15:59:58+00:00" - }, { - "city": "Sofia", - "latitude": 42.69751, - "longitude": 23.32415, - "sunrise": "2017-02-09T05:30:42+00:00", - "sunset": "2017-02-09T15:51:06+00:00" - }, { - "city": "Stanley", - "latitude": -51.7, - "longitude": -57.85, - "sunrise": "2017-02-09T08:44:14+00:00", - "sunset": "2017-02-09T23:26:58+00:00" - }, { - "city": "Stockholm", - "latitude": 59.33258, - "longitude": 18.0649, - "sunrise": "2017-02-09T06:36:44+00:00", - "sunset": "2017-02-09T15:27:09+00:00" - }, { - "city": "Sucre", - "latitude": -19.03332, - "longitude": -65.26274, - "sunrise": "2017-02-09T10:11:20+00:00", - "sunset": "2017-02-09T22:59:10+00:00" - }, { - "city": "Suva", - "latitude": -18.14161, - "longitude": 178.44149, - "sunrise": "2017-02-08T17:57:14+00:00", - "sunset": "2017-02-09T06:43:37+00:00" - }, { - "city": "T??rshavn", - "latitude": 62.00973, - "longitude": -6.77164, - "sunrise": "2017-02-09T08:27:53+00:00", - "sunset": "2017-02-09T16:54:41+00:00" - }, { - "city": "Taipei", - "latitude": 25.04776, - "longitude": 121.53185, - "sunrise": "2017-02-08T22:31:50+00:00", - "sunset": "2017-02-09T09:44:17+00:00" - }, { - "city": "Tallinn", - "latitude": 59.43696, - "longitude": 24.75353, - "sunrise": "2017-02-09T06:10:27+00:00", - "sunset": "2017-02-09T14:59:55+00:00" - }, { - "city": "Tarawa", - "latitude": 1.3278, - "longitude": 172.97696, - "sunrise": "2017-02-08T18:40:08+00:00", - "sunset": "2017-02-09T06:44:26+00:00" - }, { - "city": "Tashkent", - "latitude": 41.26465, - "longitude": 69.21627, - "sunrise": "2017-02-09T02:24:40+00:00", - "sunset": "2017-02-09T12:49:59+00:00" - }, { - "city": "Tbilisi", - "latitude": 41.69411, - "longitude": 44.83368, - "sunrise": "2017-02-09T04:02:53+00:00", - "sunset": "2017-02-09T14:26:50+00:00" - }, { - "city": "Tegucigalpa", - "latitude": 14.0818, - "longitude": -87.20681, - "sunrise": "2017-02-09T12:14:02+00:00", - "sunset": "2017-02-09T23:52:02+00:00" - }, { - "city": "Tehr��n", - "latitude": 35.69439, - "longitude": 51.42151, - "sunrise": "2017-02-09T03:26:37+00:00", - "sunset": "2017-02-09T14:10:24+00:00" - }, { - "city": "The Valley", - "latitude": 18.21704, - "longitude": -63.05783, - "sunrise": "2017-02-09T10:41:57+00:00", - "sunset": "2017-02-09T22:10:54+00:00" - }, { - "city": "Thimphu", - "latitude": 27.46609, - "longitude": 89.64191, - "sunrise": "2017-02-09T00:42:23+00:00", - "sunset": "2017-02-09T11:48:52+00:00" - }, { - "city": "Tirana", - "latitude": 41.3275, - "longitude": 19.81889, - "sunrise": "2017-02-09T05:42:12+00:00", - "sunset": "2017-02-09T16:07:38+00:00" - }, { - "city": "Tokyo", - "latitude": 35.61488, - "longitude": 139.5813, - "sunrise": "2017-02-08T21:34:06+00:00", - "sunset": "2017-02-09T08:17:38+00:00" - }, { - "city": "Tripoli", - "latitude": 32.87519, - "longitude": 13.18746, - "sunrise": "2017-02-09T05:55:19+00:00", - "sunset": "2017-02-09T16:47:35+00:00" - }, { - "city": "Tunis", - "latitude": 36.81897, - "longitude": 10.16579, - "sunrise": "2017-02-09T06:13:16+00:00", - "sunset": "2017-02-09T16:53:48+00:00" - }, { - "city": "Ulaanbaatar", - "latitude": 47.90771, - "longitude": 106.88324, - "sunrise": "2017-02-09T00:07:30+00:00", - "sunset": "2017-02-09T10:05:49+00:00" - }, { - "city": "Vaduz", - "latitude": 47.14151, - "longitude": 9.52154, - "sunrise": "2017-02-09T06:34:49+00:00", - "sunset": "2017-02-09T16:37:24+00:00" - }, { - "city": "Valletta", - "latitude": 35.89972, - "longitude": 14.51472, - "sunrise": "2017-02-09T05:54:28+00:00", - "sunset": "2017-02-09T16:37:49+00:00" - }, { - "city": "Vatican City", - "latitude": 41.90236, - "longitude": 12.45332, - "sunrise": "2017-02-09T06:12:40+00:00", - "sunset": "2017-02-09T16:36:05+00:00" - }, { - "city": "Victoria", - "latitude": -4.61667, - "longitude": 55.45, - "sunrise": "2017-02-09T02:24:06+00:00", - "sunset": "2017-02-09T14:40:41+00:00" - }, { - "city": "Vienna", - "latitude": 48.20849, - "longitude": 16.37208, - "sunrise": "2017-02-09T06:09:50+00:00", - "sunset": "2017-02-09T16:07:35+00:00" - }, { - "city": "Vientiane", - "latitude": 17.96667, - "longitude": 102.6, - "sunrise": "2017-02-08T23:39:15+00:00", - "sunset": "2017-02-09T11:08:20+00:00" - }, { - "city": "Vilnius", - "latitude": 54.68916, - "longitude": 25.2798, - "sunrise": "2017-02-09T05:51:26+00:00", - "sunset": "2017-02-09T15:14:43+00:00" - }, { - "city": "Warsaw", - "latitude": 52.22977, - "longitude": 21.01178, - "sunrise": "2017-02-09T06:01:20+00:00", - "sunset": "2017-02-09T15:38:58+00:00" - }, { - "city": "Washington, D. C.", - "latitude": 38.89511, - "longitude": -77.03637, - "sunrise": "2017-02-09T12:05:09+00:00", - "sunset": "2017-02-09T22:39:33+00:00" - }, { - "city": "Wellington", - "latitude": -41.28664, - "longitude": 174.77557, - "sunrise": "2017-02-08T17:37:42+00:00", - "sunset": "2017-02-09T07:32:28+00:00" - }, { - "city": "West Island", - "latitude": -12.15681, - "longitude": 96.82251, - "sunrise": "2017-02-08T23:30:34+00:00", - "sunset": "2017-02-09T12:03:14+00:00" - }, { - "city": "Willemstad", - "latitude": 12.1084, - "longitude": -68.93354, - "sunrise": "2017-02-09T10:58:51+00:00", - "sunset": "2017-02-09T22:41:00+00:00" - }, { - "city": "Windhoek", - "latitude": -22.55941, - "longitude": 17.08323, - "sunrise": "2017-02-09T04:37:35+00:00", - "sunset": "2017-02-09T17:34:09+00:00" - }, { - "city": "Yamoussoukro", - "latitude": 6.81667, - "longitude": -5.28333, - "sunrise": "2017-02-09T06:38:47+00:00", - "sunset": "2017-02-09T18:31:52+00:00" - }, { - "city": "Yaound??", - "latitude": 3.86667, - "longitude": 11.51667, - "sunrise": "2017-02-09T05:28:34+00:00", - "sunset": "2017-02-09T17:27:42+00:00" - }, { - "city": "Yerevan", - "latitude": 40.18111, - "longitude": 44.51361, - "sunrise": "2017-02-09T04:01:30+00:00", - "sunset": "2017-02-09T14:30:47+00:00" - }, { - "city": "Zagreb", - "latitude": 45.81444, - "longitude": 15.97798, - "sunrise": "2017-02-09T06:06:11+00:00", - "sunset": "2017-02-09T16:14:23+00:00" - }] diff --git a/Solar iOSTests/CorrectResults.swift b/Solar iOSTests/CorrectResults.swift new file mode 100644 index 0000000..bb88e8b --- /dev/null +++ b/Solar iOSTests/CorrectResults.swift @@ -0,0 +1,1432 @@ +// +// Created on 07/06/2020. +// +// + +import Foundation + +let correctResults = """ +[{ +"city": "Abu Dhabi", +"latitude": 24.46667, +"longitude": 54.36667, +"sunrise": "2017-02-09T02:59:40+00:00", +"sunset": "2017-02-09T14:13:47+00:00" +}, { +"city": "Abuja", +"latitude": 9.05735, +"longitude": 7.48976, +"sunrise": "2017-02-09T05:50:01+00:00", +"sunset": "2017-02-09T17:38:27+00:00" +}, { +"city": "Accra", +"latitude": 5.55602, +"longitude": -0.1969, +"sunrise": "2017-02-09T06:17:09+00:00", +"sunset": "2017-02-09T18:12:49+00:00" +}, { +"city": "Adamstown", +"latitude": -25.06597, +"longitude": -130.10147, +"sunrise": "2017-02-09T14:23:26+00:00", +"sunset": "2017-02-10T03:25:47+00:00" +}, { +"city": "Addis Ababa", +"latitude": 9.02497, +"longitude": 38.74689, +"sunrise": "2017-02-09T03:44:59+00:00", +"sunset": "2017-02-09T15:33:26+00:00" +}, { +"city": "Algiers", +"latitude": 36.7525, +"longitude": 3.04197, +"sunrise": "2017-02-09T06:41:38+00:00", +"sunset": "2017-02-09T17:22:25+00:00" +}, { +"city": "Alofi", +"latitude": -19.05952, +"longitude": -169.91867, +"sunrise": "2017-02-09T17:10:04+00:00", +"sunset": "2017-02-10T05:57:41+00:00" +}, { +"city": "Amman", +"latitude": 31.95522, +"longitude": 35.94503, +"sunrise": "2017-02-09T04:23:02+00:00", +"sunset": "2017-02-09T15:17:47+00:00" +}, { +"city": "Amsterdam", +"latitude": 52.37403, +"longitude": 4.88969, +"sunrise": "2017-02-09T07:06:08+00:00", +"sunset": "2017-02-09T16:43:09+00:00" +}, { +"city": "Andorra la Vella", +"latitude": 42.50779, +"longitude": 1.52109, +"sunrise": "2017-02-09T06:57:28+00:00", +"sunset": "2017-02-09T17:18:45+00:00" +}, { +"city": "Ankara", +"latitude": 39.91987, +"longitude": 32.85427, +"sunrise": "2017-02-09T04:47:39+00:00", +"sunset": "2017-02-09T15:17:54+00:00" +}, { +"city": "Antananarivo", +"latitude": -18.91433, +"longitude": 47.53098, +"sunrise": "2017-02-09T02:40:08+00:00", +"sunset": "2017-02-09T15:28:00+00:00" +}, { +"city": "Apia", +"latitude": -13.83333, +"longitude": -171.76666, +"sunrise": "2017-02-09T17:23:21+00:00", +"sunset": "2017-02-10T05:59:12+00:00" +}, { +"city": "Ashgabat", +"latitude": 37.95, +"longitude": 58.38333, +"sunrise": "2017-02-09T03:02:20+00:00", +"sunset": "2017-02-09T13:38:59+00:00" +}, { +"city": "Asmara", +"latitude": 15.33333, +"longitude": 38.93333, +"sunrise": "2017-02-09T03:50:56+00:00", +"sunset": "2017-02-09T15:25:59+00:00" +}, { +"city": "Astana", +"latitude": 51.1801, +"longitude": 71.44598, +"sunrise": "2017-02-09T02:37:03+00:00", +"sunset": "2017-02-09T12:19:47+00:00" +}, { +"city": "Asunci??n", +"latitude": -25.30066, +"longitude": -57.63591, +"sunrise": "2017-02-09T09:33:08+00:00", +"sunset": "2017-02-09T22:36:22+00:00" +}, { +"city": "Athens", +"latitude": 37.97945, +"longitude": 23.71622, +"sunrise": "2017-02-09T05:20:57+00:00", +"sunset": "2017-02-09T15:57:43+00:00" +}, { +"city": "Avarua", +"latitude": -21.20778, +"longitude": -159.775, +"sunrise": "2017-02-09T16:26:57+00:00", +"sunset": "2017-02-10T05:19:39+00:00" +}, { +"city": "Baghdad", +"latitude": 33.34058, +"longitude": 44.40088, +"sunrise": "2017-02-09T03:51:12+00:00", +"sunset": "2017-02-09T14:41:59+00:00" +}, { +"city": "Baku", +"latitude": 40.37767, +"longitude": 49.89201, +"sunrise": "2017-02-09T03:40:20+00:00", +"sunset": "2017-02-09T14:08:55+00:00" +}, { +"city": "Bamako", +"latitude": 12.65, +"longitude": -8, +"sunrise": "2017-02-09T06:55:45+00:00", +"sunset": "2017-02-09T18:36:39+00:00" +}, { +"city": "Bandar Seri Begawan", +"latitude": 4.94029, +"longitude": 114.94806, +"sunrise": "2017-02-08T22:35:58+00:00", +"sunset": "2017-02-09T10:32:50+00:00" +}, { +"city": "Bangkok", +"latitude": 13.75, +"longitude": 100.51667, +"sunrise": "2017-02-08T23:42:57+00:00", +"sunset": "2017-02-09T11:21:18+00:00" +}, { +"city": "Bangui", +"latitude": 4.36122, +"longitude": 18.55496, +"sunrise": "2017-02-09T05:00:55+00:00", +"sunset": "2017-02-09T16:59:02+00:00" +}, { +"city": "Banjul", +"latitude": 13.45274, +"longitude": -16.57803, +"sunrise": "2017-02-09T07:30:54+00:00", +"sunset": "2017-02-09T19:10:07+00:00" +}, { +"city": "Basseterre", +"latitude": 17.29484, +"longitude": -62.7261, +"sunrise": "2017-02-09T10:39:37+00:00", +"sunset": "2017-02-09T22:10:36+00:00" +}, { +"city": "Basse-Terre", +"latitude": 15.99854, +"longitude": -61.72548, +"sunrise": "2017-02-09T10:34:11+00:00", +"sunset": "2017-02-09T22:08:01+00:00" +}, { +"city": "Beijing", +"latitude": 39.9075, +"longitude": 116.39723, +"sunrise": "2017-02-08T23:13:43+00:00", +"sunset": "2017-02-09T09:43:29+00:00" +}, { +"city": "Beirut", +"latitude": 33.88894, +"longitude": 35.49442, +"sunrise": "2017-02-09T04:27:36+00:00", +"sunset": "2017-02-09T15:16:50+00:00" +}, { +"city": "Belgrade", +"latitude": 44.80401, +"longitude": 20.46513, +"sunrise": "2017-02-09T05:46:11+00:00", +"sunset": "2017-02-09T15:58:29+00:00" +}, { +"city": "Belmopan", +"latitude": 17.25, +"longitude": -88.76667, +"sunrise": "2017-02-09T12:23:42+00:00", +"sunset": "2017-02-09T23:54:50+00:00" +}, { +"city": "Berlin", +"latitude": 52.52437, +"longitude": 13.41053, +"sunrise": "2017-02-09T06:32:30+00:00", +"sunset": "2017-02-09T16:08:36+00:00" +}, { +"city": "Bern", +"latitude": 46.94809, +"longitude": 7.44744, +"sunrise": "2017-02-09T06:42:41+00:00", +"sunset": "2017-02-09T16:46:08+00:00" +}, { +"city": "Bishkek", +"latitude": 42.87306, +"longitude": 74.60028, +"sunrise": "2017-02-09T02:06:06+00:00", +"sunset": "2017-02-09T12:25:29+00:00" +}, { +"city": "Bissau", +"latitude": 11.85, +"longitude": -15.58333, +"sunrise": "2017-02-09T07:25:13+00:00", +"sunset": "2017-02-09T19:07:50+00:00" +}, { +"city": "Bogot?�", +"latitude": 4.60971, +"longitude": -74.08175, +"sunrise": "2017-02-09T11:11:42+00:00", +"sunset": "2017-02-09T23:09:21+00:00" +}, { +"city": "Bras??lia", +"latitude": -15.77972, +"longitude": -47.92972, +"sunrise": "2017-02-09T09:05:42+00:00", +"sunset": "2017-02-09T21:46:08+00:00" +}, { +"city": "Bratislava", +"latitude": 48.14816, +"longitude": 17.10674, +"sunrise": "2017-02-09T06:06:45+00:00", +"sunset": "2017-02-09T16:04:47+00:00" +}, { +"city": "Brazzaville", +"latitude": -4.2669, +"longitude": 15.28327, +"sunrise": "2017-02-09T05:05:09+00:00", +"sunset": "2017-02-09T17:20:59+00:00" +}, { +"city": "Bridgetown", +"latitude": 13.1, +"longitude": -59.61667, +"sunrise": "2017-02-09T10:22:39+00:00", +"sunset": "2017-02-09T22:02:41+00:00" +}, { +"city": "Brussels", +"latitude": 50.85045, +"longitude": 4.34878, +"sunrise": "2017-02-09T07:04:15+00:00", +"sunset": "2017-02-09T16:49:21+00:00" +}, { +"city": "Bucure�?ti", +"latitude": 44.43225, +"longitude": 26.10626, +"sunrise": "2017-02-09T05:22:54+00:00", +"sunset": "2017-02-09T15:36:38+00:00" +}, { +"city": "Budapest", +"latitude": 47.49801, +"longitude": 19.03991, +"sunrise": "2017-02-09T05:57:34+00:00", +"sunset": "2017-02-09T15:58:30+00:00" +}, { +"city": "Buenos Aires", +"latitude": -34.61315, +"longitude": -58.37723, +"sunrise": "2017-02-09T09:22:49+00:00", +"sunset": "2017-02-09T22:52:36+00:00" +}, { +"city": "Bujumbura", +"latitude": -3.37611, +"longitude": 29.36, +"sunrise": "2017-02-09T04:09:45+00:00", +"sunset": "2017-02-09T16:23:45+00:00" +}, { +"city": "Cairo", +"latitude": 30.06263, +"longitude": 31.24967, +"sunrise": "2017-02-09T04:39:14+00:00", +"sunset": "2017-02-09T15:39:10+00:00" +}, { +"city": "Canberra", +"latitude": -35.28346, +"longitude": 149.12807, +"sunrise": "2017-02-08T19:31:08+00:00", +"sunset": "2017-02-09T09:04:13+00:00" +}, { +"city": "Caracas", +"latitude": 10.5, +"longitude": -66.91667, +"sunrise": "2017-02-09T10:49:06+00:00", +"sunset": "2017-02-09T22:34:37+00:00" +}, { +"city": "Castries", +"latitude": 13.9957, +"longitude": -61.00614, +"sunrise": "2017-02-09T10:29:09+00:00", +"sunset": "2017-02-09T22:07:17+00:00" +}, { +"city": "Cayenne", +"latitude": 4.93333, +"longitude": -52.33333, +"sunrise": "2017-02-09T09:45:02+00:00", +"sunset": "2017-02-09T21:42:01+00:00" +}, { +"city": "Charlotte Amalie", +"latitude": 18.3419, +"longitude": -64.9307, +"sunrise": "2017-02-09T10:49:35+00:00", +"sunset": "2017-02-09T22:18:16+00:00" +}, { +"city": "Chi�?in��u", +"latitude": 47.00556, +"longitude": 28.8575, +"sunrise": "2017-02-09T05:17:15+00:00", +"sunset": "2017-02-09T15:20:16+00:00" +}, { +"city": "Cockburn Town", +"latitude": 21.46122, +"longitude": -71.14188, +"sunrise": "2017-02-09T11:17:57+00:00", +"sunset": "2017-02-09T22:39:35+00:00" +}, { +"city": "Colombo", +"latitude": 6.93194, +"longitude": 79.84778, +"sunrise": "2017-02-09T00:58:25+00:00", +"sunset": "2017-02-09T12:51:11+00:00" +}, { +"city": "Conakry", +"latitude": 9.53795, +"longitude": -13.67729, +"sunrise": "2017-02-09T07:15:11+00:00", +"sunset": "2017-02-09T19:02:38+00:00" +}, { +"city": "Copenhagen", +"latitude": 55.67594, +"longitude": 12.56553, +"sunrise": "2017-02-09T06:45:21+00:00", +"sunset": "2017-02-09T16:02:31+00:00" +}, { +"city": "Dakar", +"latitude": 14.6937, +"longitude": -17.44406, +"sunrise": "2017-02-09T07:35:42+00:00", +"sunset": "2017-02-09T19:12:15+00:00" +}, { +"city": "Damascus", +"latitude": 33.5102, +"longitude": 36.29128, +"sunrise": "2017-02-09T04:23:52+00:00", +"sunset": "2017-02-09T15:14:12+00:00" +}, { +"city": "Dhaka", +"latitude": 23.7104, +"longitude": 90.40744, +"sunrise": "2017-02-09T00:34:39+00:00", +"sunset": "2017-02-09T11:50:28+00:00" +}, { +"city": "Dili", +"latitude": -8.55861, +"longitude": 125.57361, +"sunrise": "2017-02-08T21:39:25+00:00", +"sunset": "2017-02-09T10:04:22+00:00" +}, { +"city": "Djibouti", +"latitude": 11.58767, +"longitude": 43.14468, +"sunrise": "2017-02-09T03:30:05+00:00", +"sunset": "2017-02-09T15:13:09+00:00" +}, { +"city": "Dodoma", +"latitude": -6.17486, +"longitude": 35.73792, +"sunrise": "2017-02-09T03:41:20+00:00", +"sunset": "2017-02-09T16:01:09+00:00" +}, { +"city": "Doha", +"latitude": 25.27932, +"longitude": 51.52245, +"sunrise": "2017-02-09T03:12:02+00:00", +"sunset": "2017-02-09T14:24:10+00:00" +}, { +"city": "Douglas", +"latitude": 54.15, +"longitude": -4.48333, +"sunrise": "2017-02-09T07:48:40+00:00", +"sunset": "2017-02-09T17:15:35+00:00" +}, { +"city": "Dublin", +"latitude": 53.34399, +"longitude": -6.26719, +"sunrise": "2017-02-09T07:53:26+00:00", +"sunset": "2017-02-09T17:25:06+00:00" +}, { +"city": "Dushanbe", +"latitude": 38.53575, +"longitude": 68.77905, +"sunrise": "2017-02-09T02:21:44+00:00", +"sunset": "2017-02-09T12:56:25+00:00" +}, { +"city": "Flying Fish Cove", +"latitude": -10.42172, +"longitude": 105.67912, +"sunrise": "2017-02-08T22:57:01+00:00", +"sunset": "2017-02-09T11:25:56+00:00" +}, { +"city": "Fort-de-France", +"latitude": 14.60892, +"longitude": -61.07334, +"sunrise": "2017-02-09T10:30:05+00:00", +"sunset": "2017-02-09T22:06:54+00:00" +}, { +"city": "Freetown", +"latitude": 8.484, +"longitude": -13.22994, +"sunrise": "2017-02-09T07:12:18+00:00", +"sunset": "2017-02-09T19:01:56+00:00" +}, { +"city": "Funafuti", +"latitude": -8.52425, +"longitude": 179.19417, +"sunrise": "2017-02-08T18:04:57+00:00", +"sunset": "2017-02-09T06:29:53+00:00" +}, { +"city": "Gaborone", +"latitude": -24.65451, +"longitude": 25.90859, +"sunrise": "2017-02-09T03:59:37+00:00", +"sunset": "2017-02-09T17:01:30+00:00" +}, { +"city": "George Town", +"latitude": 19.28692, +"longitude": -81.36706, +"sunrise": "2017-02-09T11:56:22+00:00", +"sunset": "2017-02-09T23:22:58+00:00" +}, { +"city": "Georgetown", +"latitude": 6.80448, +"longitude": -58.15527, +"sunrise": "2017-02-09T10:10:15+00:00", +"sunset": "2017-02-09T22:03:24+00:00" +}, { +"city": "Gibraltar", +"latitude": 36.14474, +"longitude": -5.35257, +"sunrise": "2017-02-09T07:14:15+00:00", +"sunset": "2017-02-09T17:56:58+00:00" +}, { +"city": "Grytviken", +"latitude": -54.28111, +"longitude": -36.5092, +"sunrise": "2017-02-09T07:10:34+00:00", +"sunset": "2017-02-09T22:09:54+00:00" +}, { +"city": "Guatemala City", +"latitude": 14.64072, +"longitude": -90.51327, +"sunrise": "2017-02-09T12:27:51+00:00", +"sunset": "2017-02-10T00:04:39+00:00" +}, { +"city": "Gustavia", +"latitude": 17.89618, +"longitude": -62.84978, +"sunrise": "2017-02-09T10:40:46+00:00", +"sunset": "2017-02-09T22:10:26+00:00" +}, { +"city": "H?� N��?i", +"latitude": 21.0245, +"longitude": 105.84117, +"sunrise": "2017-02-08T23:29:46+00:00", +"sunset": "2017-02-09T10:51:53+00:00" +}, { +"city": "Hag?�t?�a", +"latitude": 13.47417, +"longitude": 144.74778, +"sunrise": "2017-02-08T20:45:46+00:00", +"sunset": "2017-02-09T08:24:38+00:00" +}, { +"city": "Hamilton", +"latitude": 32.29149, +"longitude": -64.77797, +"sunrise": "2017-02-09T11:06:10+00:00", +"sunset": "2017-02-09T22:00:27+00:00" +}, { +"city": "Harare", +"latitude": -17.82935, +"longitude": 31.05389, +"sunrise": "2017-02-09T03:47:20+00:00", +"sunset": "2017-02-09T16:32:37+00:00" +}, { +"city": "Havana", +"latitude": 23.13302, +"longitude": -82.38304, +"sunrise": "2017-02-09T12:04:51+00:00", +"sunset": "2017-02-09T23:22:37+00:00" +}, { +"city": "Helsinki", +"latitude": 60.16952, +"longitude": 24.93545, +"sunrise": "2017-02-09T06:12:49+00:00", +"sunset": "2017-02-09T14:56:06+00:00" +}, { +"city": "Hong Kong", +"latitude": 22.28552, +"longitude": 114.15769, +"sunrise": "2017-02-08T22:58:00+00:00", +"sunset": "2017-02-09T10:17:08+00:00" +}, { +"city": "Honiara", +"latitude": -9.43333, +"longitude": 159.95, +"sunrise": "2017-02-08T19:20:58+00:00", +"sunset": "2017-02-09T07:47:49+00:00" +}, { +"city": "Isl��m��b��d", +"latitude": 33.72148, +"longitude": 73.04329, +"sunrise": "2017-02-09T01:57:15+00:00", +"sunset": "2017-02-09T12:46:47+00:00" +}, { +"city": "Jakarta", +"latitude": -6.21462, +"longitude": 106.84513, +"sunrise": "2017-02-08T22:56:50+00:00", +"sunset": "2017-02-09T11:16:47+00:00" +}, { +"city": "Jamestown", +"latitude": -15.93872, +"longitude": -5.71675, +"sunrise": "2017-02-09T06:16:38+00:00", +"sunset": "2017-02-09T18:57:30+00:00" +}, { +"city": "Kabul", +"latitude": 34.52813, +"longitude": 69.17233, +"sunrise": "2017-02-09T02:13:55+00:00", +"sunset": "2017-02-09T13:01:06+00:00" +}, { +"city": "Kampala", +"latitude": 0.31628, +"longitude": 32.58219, +"sunrise": "2017-02-09T04:00:40+00:00", +"sunset": "2017-02-09T16:07:04+00:00" +}, { +"city": "Kathmandu", +"latitude": 27.70169, +"longitude": 85.3206, +"sunrise": "2017-02-09T00:59:57+00:00", +"sunset": "2017-02-09T12:05:52+00:00" +}, { +"city": "Khartoum", +"latitude": 15.54665, +"longitude": 32.53361, +"sunrise": "2017-02-09T04:16:46+00:00", +"sunset": "2017-02-09T15:51:22+00:00" +}, { +"city": "Kiev", +"latitude": 50.45466, +"longitude": 30.5238, +"sunrise": "2017-02-09T05:18:40+00:00", +"sunset": "2017-02-09T15:05:32+00:00" +}, { +"city": "Kigali", +"latitude": -1.94995, +"longitude": 30.05885, +"sunrise": "2017-02-09T04:08:26+00:00", +"sunset": "2017-02-09T16:19:29+00:00" +}, { +"city": "Kingston", +"latitude": -29.05459, +"longitude": 167.96628, +"sunrise": "2017-02-08T18:25:11+00:00", +"sunset": "2017-02-09T07:39:28+00:00" +}, { +"city": "Kingston", +"latitude": 17.99702, +"longitude": -76.79358, +"sunrise": "2017-02-09T11:36:38+00:00", +"sunset": "2017-02-09T23:06:07+00:00" +}, { +"city": "Kingstown", +"latitude": 13.15872, +"longitude": -61.22475, +"sunrise": "2017-02-09T10:29:08+00:00", +"sunset": "2017-02-09T22:09:03+00:00" +}, { +"city": "Kinshasa", +"latitude": -4.32459, +"longitude": 15.32146, +"sunrise": "2017-02-09T05:04:56+00:00", +"sunset": "2017-02-09T17:20:53+00:00" +}, { +"city": "Kuala Lumpur", +"latitude": 3.1412, +"longitude": 101.68653, +"sunrise": "2017-02-08T23:27:09+00:00", +"sunset": "2017-02-09T11:27:44+00:00" +}, { +"city": "Kuwait", +"latitude": 29.36972, +"longitude": 47.97833, +"sunrise": "2017-02-09T03:31:26+00:00", +"sunset": "2017-02-09T14:33:08+00:00" +}, { +"city": "La Paz", +"latitude": -16.5, +"longitude": -68.15, +"sunrise": "2017-02-09T10:25:48+00:00", +"sunset": "2017-02-09T23:07:48+00:00" +}, { +"city": "Libreville", +"latitude": 0.38333, +"longitude": 9.45, +"sunrise": "2017-02-09T05:33:16+00:00", +"sunset": "2017-02-09T17:39:32+00:00" +}, { +"city": "Lilongwe", +"latitude": -13.98333, +"longitude": 33.78333, +"sunrise": "2017-02-09T03:40:46+00:00", +"sunset": "2017-02-09T16:17:21+00:00" +}, { +"city": "Lima", +"latitude": -12.04318, +"longitude": -77.02824, +"sunrise": "2017-02-09T11:06:15+00:00", +"sunset": "2017-02-09T23:38:23+00:00" +}, { +"city": "Lisbon", +"latitude": 38.71667, +"longitude": -9.13333, +"sunrise": "2017-02-09T07:33:27+00:00", +"sunset": "2017-02-09T18:08:01+00:00" +}, { +"city": "Ljubljana", +"latitude": 46.05108, +"longitude": 14.50513, +"sunrise": "2017-02-09T06:12:34+00:00", +"sunset": "2017-02-09T16:19:47+00:00" +}, { +"city": "Lom??", +"latitude": 6.13748, +"longitude": 1.21227, +"sunrise": "2017-02-09T06:12:07+00:00", +"sunset": "2017-02-09T18:06:35+00:00" +}, { +"city": "London", +"latitude": 51.50853, +"longitude": -0.12574, +"sunrise": "2017-02-09T07:23:50+00:00", +"sunset": "2017-02-09T17:05:34+00:00" +}, { +"city": "Luanda", +"latitude": -8.83833, +"longitude": 13.23444, +"sunrise": "2017-02-09T05:08:33+00:00", +"sunset": "2017-02-09T17:33:57+00:00" +}, { +"city": "Lusaka", +"latitude": -15.40809, +"longitude": 28.28636, +"sunrise": "2017-02-09T04:01:10+00:00", +"sunset": "2017-02-09T16:40:55+00:00" +}, { +"city": "Luxembourg", +"latitude": 49.61167, +"longitude": 6.13, +"sunrise": "2017-02-09T06:54:03+00:00", +"sunset": "2017-02-09T16:45:18+00:00" +}, { +"city": "Macau", +"latitude": 22.20056, +"longitude": 113.54611, +"sunrise": "2017-02-08T23:00:20+00:00", +"sunset": "2017-02-09T10:19:40+00:00" +}, { +"city": "Madrid", +"latitude": 40.4165, +"longitude": -3.70256, +"sunrise": "2017-02-09T07:14:37+00:00", +"sunset": "2017-02-09T17:43:24+00:00" +}, { +"city": "Majuro", +"latitude": 7.08971, +"longitude": 171.38027, +"sunrise": "2017-02-08T18:52:29+00:00", +"sunset": "2017-02-09T06:44:51+00:00" +}, { +"city": "Malabo", +"latitude": 3.75, +"longitude": 8.78333, +"sunrise": "2017-02-09T05:39:23+00:00", +"sunset": "2017-02-09T17:38:45+00:00" +}, { +"city": "Male", +"latitude": 4.1748, +"longitude": 73.50888, +"sunrise": "2017-02-09T01:20:55+00:00", +"sunset": "2017-02-09T13:19:23+00:00" +}, { +"city": "Mamoudzou", +"latitude": -12.77944, +"longitude": 45.22722, +"sunrise": "2017-02-09T02:56:19+00:00", +"sunset": "2017-02-09T15:30:15+00:00" +}, { +"city": "Managua", +"latitude": 12.13282, +"longitude": -86.2504, +"sunrise": "2017-02-09T12:08:08+00:00", +"sunset": "2017-02-09T23:50:16+00:00" +}, { +"city": "Manama", +"latitude": 26.21536, +"longitude": 50.5832, +"sunrise": "2017-02-09T03:16:57+00:00", +"sunset": "2017-02-09T14:26:46+00:00" +}, { +"city": "Manila", +"latitude": 14.6042, +"longitude": 120.9822, +"sunrise": "2017-02-08T22:22:02+00:00", +"sunset": "2017-02-09T09:58:30+00:00" +}, { +"city": "Maputo", +"latitude": -25.96528, +"longitude": 32.58917, +"sunrise": "2017-02-09T03:31:11+00:00", +"sunset": "2017-02-09T16:36:29+00:00" +}, { +"city": "Mariehamn", +"latitude": 60.09726, +"longitude": 19.93481, +"sunrise": "2017-02-09T06:32:28+00:00", +"sunset": "2017-02-09T15:16:27+00:00" +}, { +"city": "Marigot", +"latitude": 18.06667, +"longitude": -63.08333, +"sunrise": "2017-02-09T10:41:53+00:00", +"sunset": "2017-02-09T22:11:10+00:00" +}, { +"city": "Maseru", +"latitude": -29.31667, +"longitude": 27.48333, +"sunrise": "2017-02-09T03:47:04+00:00", +"sunset": "2017-02-09T17:01:28+00:00" +}, { +"city": "Mat?�'utu", +"latitude": -13.28163, +"longitude": -176.17453, +"sunrise": "2017-02-09T17:41:35+00:00", +"sunset": "2017-02-10T06:16:13+00:00" +}, { +"city": "Mbabane", +"latitude": -26.31667, +"longitude": 31.13333, +"sunrise": "2017-02-09T03:36:33+00:00", +"sunset": "2017-02-09T16:42:47+00:00" +}, { +"city": "Mexico City", +"latitude": 19.42847, +"longitude": -99.12766, +"sunrise": "2017-02-09T13:07:33+00:00", +"sunset": "2017-02-10T00:33:53+00:00" +}, { +"city": "Minsk", +"latitude": 53.9, +"longitude": 27.56667, +"sunrise": "2017-02-09T05:39:54+00:00", +"sunset": "2017-02-09T15:07:57+00:00" +}, { +"city": "Mogadishu", +"latitude": 2.03711, +"longitude": 45.34375, +"sunrise": "2017-02-09T03:11:23+00:00", +"sunset": "2017-02-09T15:14:15+00:00" +}, { +"city": "Monaco", +"latitude": 43.73333, +"longitude": 7.41667, +"sunrise": "2017-02-09T06:36:14+00:00", +"sunset": "2017-02-09T16:52:50+00:00" +}, { +"city": "Monrovia", +"latitude": 6.30054, +"longitude": -10.7969, +"sunrise": "2017-02-09T07:00:19+00:00", +"sunset": "2017-02-09T18:54:27+00:00" +}, { +"city": "Montevideo", +"latitude": -34.83346, +"longitude": -56.16735, +"sunrise": "2017-02-09T09:13:37+00:00", +"sunset": "2017-02-09T22:44:07+00:00" +}, { +"city": "Moroni", +"latitude": -11.70216, +"longitude": 43.25506, +"sunrise": "2017-02-09T03:05:23+00:00", +"sunset": "2017-02-09T15:36:58+00:00" +}, { +"city": "Moscow", +"latitude": 55.75222, +"longitude": 37.61556, +"sunrise": "2017-02-09T05:05:33+00:00", +"sunset": "2017-02-09T14:21:55+00:00" +}, { +"city": "Muscat", +"latitude": 23.61333, +"longitude": 58.59333, +"sunrise": "2017-02-09T02:41:45+00:00", +"sunset": "2017-02-09T13:57:54+00:00" +}, { +"city": "Nairobi", +"latitude": -1.28333, +"longitude": 36.81667, +"sunrise": "2017-02-09T03:42:05+00:00", +"sunset": "2017-02-09T15:51:46+00:00" +}, { +"city": "Nassau", +"latitude": 25.05823, +"longitude": -77.34306, +"sunrise": "2017-02-09T11:47:00+00:00", +"sunset": "2017-02-09T23:00:08+00:00" +}, { +"city": "Nay Pyi Taw", +"latitude": 19.745, +"longitude": 96.12972, +"sunrise": "2017-02-09T00:07:08+00:00", +"sunset": "2017-02-09T11:32:13+00:00" +}, { +"city": "N'Djamena", +"latitude": 12.11058, +"longitude": 15.03479, +"sunrise": "2017-02-09T05:23:03+00:00", +"sunset": "2017-02-09T17:05:04+00:00" +}, { +"city": "New Delhi", +"latitude": 28.63576, +"longitude": 77.22445, +"sunrise": "2017-02-09T01:33:32+00:00", +"sunset": "2017-02-09T12:37:03+00:00" +}, { +"city": "Ngerulmud", +"latitude": 7.50043, +"longitude": 134.62355, +"sunrise": "2017-02-08T21:19:56+00:00", +"sunset": "2017-02-09T09:11:28+00:00" +}, { +"city": "Niamey", +"latitude": 13.5125, +"longitude": 2.11178, +"sunrise": "2017-02-09T06:16:13+00:00", +"sunset": "2017-02-09T17:55:16+00:00" +}, { +"city": "Nicosia", +"latitude": 35.16667, +"longitude": 33.36667, +"sunrise": "2017-02-09T04:38:00+00:00", +"sunset": "2017-02-09T15:23:28+00:00" +}, { +"city": "Nouakchott", +"latitude": 18.10033, +"longitude": -15.94975, +"sunrise": "2017-02-09T07:33:27+00:00", +"sunset": "2017-02-09T19:02:32+00:00" +}, { +"city": "Noum??a", +"latitude": -22.27631, +"longitude": 166.4572, +"sunrise": "2017-02-08T18:40:11+00:00", +"sunset": "2017-02-09T07:36:32+00:00" +}, { +"city": "Nuku`alofa", +"latitude": -21.13333, +"longitude": -175.2, +"sunrise": "2017-02-09T17:28:46+00:00", +"sunset": "2017-02-10T06:21:15+00:00" +}, { +"city": "Nuuk", +"latitude": 64.18347, +"longitude": -51.72157, +"sunrise": "2017-02-09T11:38:57+00:00", +"sunset": "2017-02-09T19:43:13+00:00" +}, { +"city": "Oranjestad", +"latitude": 12.52398, +"longitude": -70.02703, +"sunrise": "2017-02-09T11:03:40+00:00", +"sunset": "2017-02-09T22:44:57+00:00" +}, { +"city": "Oslo", +"latitude": 59.91273, +"longitude": 10.74609, +"sunrise": "2017-02-09T07:08:22+00:00", +"sunset": "2017-02-09T15:54:03+00:00" +}, { +"city": "Ottawa", +"latitude": 45.41117, +"longitude": -75.69812, +"sunrise": "2017-02-09T12:11:42+00:00", +"sunset": "2017-02-09T22:22:17+00:00" +}, { +"city": "Ouagadougou", +"latitude": 12.36423, +"longitude": -1.53834, +"sunrise": "2017-02-09T06:29:36+00:00", +"sunset": "2017-02-09T18:11:06+00:00" +}, { +"city": "Pago Pago", +"latitude": -14.27806, +"longitude": -170.7025, +"sunrise": "2017-02-09T17:18:36+00:00", +"sunset": "2017-02-10T05:55:25+00:00" +}, { +"city": "Palikir - National Government Center", +"latitude": 6.92477, +"longitude": 158.16109, +"sunrise": "2017-02-08T19:45:11+00:00", +"sunset": "2017-02-09T07:37:54+00:00" +}, { +"city": "Panam?�", +"latitude": 8.9936, +"longitude": -79.51973, +"sunrise": "2017-02-09T11:37:57+00:00", +"sunset": "2017-02-09T23:26:37+00:00" +}, { +"city": "Papeete", +"latitude": -17.53333, +"longitude": -149.56667, +"sunrise": "2017-02-09T15:50:24+00:00", +"sunset": "2017-02-10T04:34:33+00:00" +}, { +"city": "Paramaribo", +"latitude": 5.86638, +"longitude": -55.16682, +"sunrise": "2017-02-09T09:57:20+00:00", +"sunset": "2017-02-09T21:52:24+00:00" +}, { +"city": "Paris", +"latitude": 48.85341, +"longitude": 2.3488, +"sunrise": "2017-02-09T07:07:21+00:00", +"sunset": "2017-02-09T17:02:15+00:00" +}, { +"city": "Philipsburg", +"latitude": 18.026, +"longitude": -63.04582, +"sunrise": "2017-02-09T10:41:42+00:00", +"sunset": "2017-02-09T22:11:04+00:00" +}, { +"city": "Phnom Penh", +"latitude": 11.56245, +"longitude": 104.91601, +"sunrise": "2017-02-08T23:23:01+00:00", +"sunset": "2017-02-09T11:06:03+00:00" +}, { +"city": "Plymouth", +"latitude": 16.70555, +"longitude": -62.21292, +"sunrise": "2017-02-09T10:36:55+00:00", +"sunset": "2017-02-09T22:09:11+00:00" +}, { +"city": "Podgorica", +"latitude": 42.44111, +"longitude": 19.26361, +"sunrise": "2017-02-09T05:46:27+00:00", +"sunset": "2017-02-09T16:07:50+00:00" +}, { +"city": "Port Louis", +"latitude": -20.16194, +"longitude": 57.49889, +"sunrise": "2017-02-09T01:58:46+00:00", +"sunset": "2017-02-09T14:49:37+00:00" +}, { +"city": "Port Moresby", +"latitude": -9.44314, +"longitude": 147.17972, +"sunrise": "2017-02-08T20:12:02+00:00", +"sunset": "2017-02-09T08:38:54+00:00" +}, { +"city": "Port-au-Prince", +"latitude": 18.53917, +"longitude": -72.335, +"sunrise": "2017-02-09T11:19:25+00:00", +"sunset": "2017-02-09T22:47:40+00:00" +}, { +"city": "Port-aux-Fran??ais", +"latitude": -49.35, +"longitude": 70.21667, +"sunrise": "2017-02-09T00:17:56+00:00", +"sunset": "2017-02-09T14:48:43+00:00" +}, { +"city": "Port-of-Spain", +"latitude": 10.66617, +"longitude": -61.51657, +"sunrise": "2017-02-09T10:27:41+00:00", +"sunset": "2017-02-09T22:12:51+00:00" +}, { +"city": "Porto-Novo", +"latitude": 6.49646, +"longitude": 2.60359, +"sunrise": "2017-02-09T06:06:55+00:00", +"sunset": "2017-02-09T18:00:39+00:00" +}, { +"city": "Port-Vila", +"latitude": -17.73381, +"longitude": 168.32188, +"sunrise": "2017-02-08T18:38:12+00:00", +"sunset": "2017-02-09T07:23:36+00:00" +}, { +"city": "Praha", +"latitude": 50.08804, +"longitude": 14.42076, +"sunrise": "2017-02-09T06:22:06+00:00", +"sunset": "2017-02-09T16:10:56+00:00" +}, { +"city": "Praia", +"latitude": 14.92148, +"longitude": -23.50868, +"sunrise": "2017-02-09T08:00:12+00:00", +"sunset": "2017-02-09T19:36:16+00:00" +}, { +"city": "Pretoria", +"latitude": -25.74486, +"longitude": 28.18783, +"sunrise": "2017-02-09T03:49:05+00:00", +"sunset": "2017-02-09T16:53:48+00:00" +}, { +"city": "Pristina", +"latitude": 42.67272, +"longitude": 21.16688, +"sunrise": "2017-02-09T05:39:16+00:00", +"sunset": "2017-02-09T15:59:47+00:00" +}, { +"city": "Pyongyang", +"latitude": 39.03385, +"longitude": 125.75432, +"sunrise": "2017-02-08T22:34:50+00:00", +"sunset": "2017-02-09T09:07:30+00:00" +}, { +"city": "Quito", +"latitude": -0.22985, +"longitude": -78.52495, +"sunrise": "2017-02-09T11:24:32+00:00", +"sunset": "2017-02-09T23:32:03+00:00" +}, { +"city": "Rabat", +"latitude": 34.01325, +"longitude": -6.83255, +"sunrise": "2017-02-09T07:16:59+00:00", +"sunset": "2017-02-09T18:06:04+00:00" +}, { +"city": "Reykjav??k", +"latitude": 64.13548, +"longitude": -21.89541, +"sunrise": "2017-02-09T09:39:38+00:00", +"sunset": "2017-02-09T17:43:56+00:00" +}, { +"city": "Riga", +"latitude": 56.946, +"longitude": 24.10589, +"sunrise": "2017-02-09T06:03:34+00:00", +"sunset": "2017-02-09T15:11:58+00:00" +}, { +"city": "Riyadh", +"latitude": 24.68773, +"longitude": 46.72185, +"sunrise": "2017-02-09T03:30:31+00:00", +"sunset": "2017-02-09T14:44:06+00:00" +}, { +"city": "Road Town", +"latitude": 18.41667, +"longitude": -64.61667, +"sunrise": "2017-02-09T10:48:25+00:00", +"sunset": "2017-02-09T22:16:55+00:00" +}, { +"city": "Roma", +"latitude": 41.89474, +"longitude": 12.4839, +"sunrise": "2017-02-09T06:12:32+00:00", +"sunset": "2017-02-09T16:35:59+00:00" +}, { +"city": "Roseau", +"latitude": 15.30174, +"longitude": -61.38808, +"sunrise": "2017-02-09T10:32:05+00:00", +"sunset": "2017-02-09T22:07:25+00:00" +}, { +"city": "S?�o Tom??", +"latitude": 0.33654, +"longitude": 6.72732, +"sunrise": "2017-02-09T05:44:06+00:00", +"sunset": "2017-02-09T17:50:28+00:00" +}, { +"city": "Saint George's", +"latitude": 12.05644, +"longitude": -61.74849, +"sunrise": "2017-02-09T10:30:04+00:00", +"sunset": "2017-02-09T22:12:19+00:00" +}, { +"city": "Saint Helier", +"latitude": 49.18333, +"longitude": -2.1, +"sunrise": "2017-02-09T07:25:54+00:00", +"sunset": "2017-02-09T17:19:17+00:00" +}, { +"city": "Saint John�??s", +"latitude": 17.11667, +"longitude": -61.85, +"sunrise": "2017-02-09T10:35:55+00:00", +"sunset": "2017-02-09T22:07:17+00:00" +}, { +"city": "Saint Peter Port", +"latitude": 49.45981, +"longitude": -2.53527, +"sunrise": "2017-02-09T07:28:18+00:00", +"sunset": "2017-02-09T17:20:22+00:00" +}, { +"city": "Saint-Denis", +"latitude": -20.88231, +"longitude": 55.4504, +"sunrise": "2017-02-09T02:06:06+00:00", +"sunset": "2017-02-09T14:58:41+00:00" +}, { +"city": "Saint-Pierre", +"latitude": 46.76544, +"longitude": -56.16949, +"sunrise": "2017-02-09T10:56:29+00:00", +"sunset": "2017-02-09T21:01:16+00:00" +}, { +"city": "San Jos??", +"latitude": 9.93333, +"longitude": -84.08333, +"sunrise": "2017-02-09T11:57:10+00:00", +"sunset": "2017-02-09T23:43:54+00:00" +}, { +"city": "San Juan", +"latitude": 18.46633, +"longitude": -66.10572, +"sunrise": "2017-02-09T10:54:25+00:00", +"sunset": "2017-02-09T22:22:49+00:00" +}, { +"city": "San Marino", +"latitude": 43.93333, +"longitude": 12.45, +"sunrise": "2017-02-09T06:16:30+00:00", +"sunset": "2017-02-09T16:32:17+00:00" +}, { +"city": "San Salvador", +"latitude": 13.68935, +"longitude": -89.18718, +"sunrise": "2017-02-09T12:21:32+00:00", +"sunset": "2017-02-10T00:00:22+00:00" +}, { +"city": "Sanaa", +"latitude": 15.35472, +"longitude": 44.20667, +"sunrise": "2017-02-09T03:29:52+00:00", +"sunset": "2017-02-09T15:04:52+00:00" +}, { +"city": "Santiago", +"latitude": -33.42628, +"longitude": -70.56656, +"sunrise": "2017-02-09T10:13:28+00:00", +"sunset": "2017-02-09T23:39:28+00:00" +}, { +"city": "Santo Domingo", +"latitude": 18.50012, +"longitude": -69.98857, +"sunrise": "2017-02-09T11:09:59+00:00", +"sunset": "2017-02-09T22:38:19+00:00" +}, { +"city": "Sarajevo", +"latitude": 43.84864, +"longitude": 18.35644, +"sunrise": "2017-02-09T05:52:44+00:00", +"sunset": "2017-02-09T16:08:48+00:00" +}, { +"city": "Seoul", +"latitude": 37.56826, +"longitude": 126.97783, +"sunrise": "2017-02-08T22:27:33+00:00", +"sunset": "2017-02-09T09:05:01+00:00" +}, { +"city": "Singapore", +"latitude": 1.28967, +"longitude": 103.85007, +"sunrise": "2017-02-08T23:16:36+00:00", +"sunset": "2017-02-09T11:20:59+00:00" +}, { +"city": "Skopje", +"latitude": 42, +"longitude": 21.43333, +"sunrise": "2017-02-09T05:36:58+00:00", +"sunset": "2017-02-09T15:59:58+00:00" +}, { +"city": "Sofia", +"latitude": 42.69751, +"longitude": 23.32415, +"sunrise": "2017-02-09T05:30:42+00:00", +"sunset": "2017-02-09T15:51:06+00:00" +}, { +"city": "Stanley", +"latitude": -51.7, +"longitude": -57.85, +"sunrise": "2017-02-09T08:44:14+00:00", +"sunset": "2017-02-09T23:26:58+00:00" +}, { +"city": "Stockholm", +"latitude": 59.33258, +"longitude": 18.0649, +"sunrise": "2017-02-09T06:36:44+00:00", +"sunset": "2017-02-09T15:27:09+00:00" +}, { +"city": "Sucre", +"latitude": -19.03332, +"longitude": -65.26274, +"sunrise": "2017-02-09T10:11:20+00:00", +"sunset": "2017-02-09T22:59:10+00:00" +}, { +"city": "Suva", +"latitude": -18.14161, +"longitude": 178.44149, +"sunrise": "2017-02-08T17:57:14+00:00", +"sunset": "2017-02-09T06:43:37+00:00" +}, { +"city": "T??rshavn", +"latitude": 62.00973, +"longitude": -6.77164, +"sunrise": "2017-02-09T08:27:53+00:00", +"sunset": "2017-02-09T16:54:41+00:00" +}, { +"city": "Taipei", +"latitude": 25.04776, +"longitude": 121.53185, +"sunrise": "2017-02-08T22:31:50+00:00", +"sunset": "2017-02-09T09:44:17+00:00" +}, { +"city": "Tallinn", +"latitude": 59.43696, +"longitude": 24.75353, +"sunrise": "2017-02-09T06:10:27+00:00", +"sunset": "2017-02-09T14:59:55+00:00" +}, { +"city": "Tarawa", +"latitude": 1.3278, +"longitude": 172.97696, +"sunrise": "2017-02-08T18:40:08+00:00", +"sunset": "2017-02-09T06:44:26+00:00" +}, { +"city": "Tashkent", +"latitude": 41.26465, +"longitude": 69.21627, +"sunrise": "2017-02-09T02:24:40+00:00", +"sunset": "2017-02-09T12:49:59+00:00" +}, { +"city": "Tbilisi", +"latitude": 41.69411, +"longitude": 44.83368, +"sunrise": "2017-02-09T04:02:53+00:00", +"sunset": "2017-02-09T14:26:50+00:00" +}, { +"city": "Tegucigalpa", +"latitude": 14.0818, +"longitude": -87.20681, +"sunrise": "2017-02-09T12:14:02+00:00", +"sunset": "2017-02-09T23:52:02+00:00" +}, { +"city": "Tehr��n", +"latitude": 35.69439, +"longitude": 51.42151, +"sunrise": "2017-02-09T03:26:37+00:00", +"sunset": "2017-02-09T14:10:24+00:00" +}, { +"city": "The Valley", +"latitude": 18.21704, +"longitude": -63.05783, +"sunrise": "2017-02-09T10:41:57+00:00", +"sunset": "2017-02-09T22:10:54+00:00" +}, { +"city": "Thimphu", +"latitude": 27.46609, +"longitude": 89.64191, +"sunrise": "2017-02-09T00:42:23+00:00", +"sunset": "2017-02-09T11:48:52+00:00" +}, { +"city": "Tirana", +"latitude": 41.3275, +"longitude": 19.81889, +"sunrise": "2017-02-09T05:42:12+00:00", +"sunset": "2017-02-09T16:07:38+00:00" +}, { +"city": "Tokyo", +"latitude": 35.61488, +"longitude": 139.5813, +"sunrise": "2017-02-08T21:34:06+00:00", +"sunset": "2017-02-09T08:17:38+00:00" +}, { +"city": "Tripoli", +"latitude": 32.87519, +"longitude": 13.18746, +"sunrise": "2017-02-09T05:55:19+00:00", +"sunset": "2017-02-09T16:47:35+00:00" +}, { +"city": "Tunis", +"latitude": 36.81897, +"longitude": 10.16579, +"sunrise": "2017-02-09T06:13:16+00:00", +"sunset": "2017-02-09T16:53:48+00:00" +}, { +"city": "Ulaanbaatar", +"latitude": 47.90771, +"longitude": 106.88324, +"sunrise": "2017-02-09T00:07:30+00:00", +"sunset": "2017-02-09T10:05:49+00:00" +}, { +"city": "Vaduz", +"latitude": 47.14151, +"longitude": 9.52154, +"sunrise": "2017-02-09T06:34:49+00:00", +"sunset": "2017-02-09T16:37:24+00:00" +}, { +"city": "Valletta", +"latitude": 35.89972, +"longitude": 14.51472, +"sunrise": "2017-02-09T05:54:28+00:00", +"sunset": "2017-02-09T16:37:49+00:00" +}, { +"city": "Vatican City", +"latitude": 41.90236, +"longitude": 12.45332, +"sunrise": "2017-02-09T06:12:40+00:00", +"sunset": "2017-02-09T16:36:05+00:00" +}, { +"city": "Victoria", +"latitude": -4.61667, +"longitude": 55.45, +"sunrise": "2017-02-09T02:24:06+00:00", +"sunset": "2017-02-09T14:40:41+00:00" +}, { +"city": "Vienna", +"latitude": 48.20849, +"longitude": 16.37208, +"sunrise": "2017-02-09T06:09:50+00:00", +"sunset": "2017-02-09T16:07:35+00:00" +}, { +"city": "Vientiane", +"latitude": 17.96667, +"longitude": 102.6, +"sunrise": "2017-02-08T23:39:15+00:00", +"sunset": "2017-02-09T11:08:20+00:00" +}, { +"city": "Vilnius", +"latitude": 54.68916, +"longitude": 25.2798, +"sunrise": "2017-02-09T05:51:26+00:00", +"sunset": "2017-02-09T15:14:43+00:00" +}, { +"city": "Warsaw", +"latitude": 52.22977, +"longitude": 21.01178, +"sunrise": "2017-02-09T06:01:20+00:00", +"sunset": "2017-02-09T15:38:58+00:00" +}, { +"city": "Washington, D. C.", +"latitude": 38.89511, +"longitude": -77.03637, +"sunrise": "2017-02-09T12:05:09+00:00", +"sunset": "2017-02-09T22:39:33+00:00" +}, { +"city": "Wellington", +"latitude": -41.28664, +"longitude": 174.77557, +"sunrise": "2017-02-08T17:37:42+00:00", +"sunset": "2017-02-09T07:32:28+00:00" +}, { +"city": "West Island", +"latitude": -12.15681, +"longitude": 96.82251, +"sunrise": "2017-02-08T23:30:34+00:00", +"sunset": "2017-02-09T12:03:14+00:00" +}, { +"city": "Willemstad", +"latitude": 12.1084, +"longitude": -68.93354, +"sunrise": "2017-02-09T10:58:51+00:00", +"sunset": "2017-02-09T22:41:00+00:00" +}, { +"city": "Windhoek", +"latitude": -22.55941, +"longitude": 17.08323, +"sunrise": "2017-02-09T04:37:35+00:00", +"sunset": "2017-02-09T17:34:09+00:00" +}, { +"city": "Yamoussoukro", +"latitude": 6.81667, +"longitude": -5.28333, +"sunrise": "2017-02-09T06:38:47+00:00", +"sunset": "2017-02-09T18:31:52+00:00" +}, { +"city": "Yaound??", +"latitude": 3.86667, +"longitude": 11.51667, +"sunrise": "2017-02-09T05:28:34+00:00", +"sunset": "2017-02-09T17:27:42+00:00" +}, { +"city": "Yerevan", +"latitude": 40.18111, +"longitude": 44.51361, +"sunrise": "2017-02-09T04:01:30+00:00", +"sunset": "2017-02-09T14:30:47+00:00" +}, { +"city": "Zagreb", +"latitude": 45.81444, +"longitude": 15.97798, +"sunrise": "2017-02-09T06:06:11+00:00", +"sunset": "2017-02-09T16:14:23+00:00" +}] +""" diff --git a/Solar iOSTests/Solar_iOSTests.swift b/Solar iOSTests/Solar_iOSTests.swift index fee1311..823fe58 100644 --- a/Solar iOSTests/Solar_iOSTests.swift +++ b/Solar iOSTests/Solar_iOSTests.swift @@ -19,10 +19,8 @@ final class Solar_iOSTests: XCTestCase { private let testAccuracy: TimeInterval = 60 * 5 private lazy var cities: [City] = { - guard - let resultsURLString = Bundle(for: type(of: self)).path(forResource: "CorrectResults", ofType: "json"), - let data = try? Data(contentsOf: URL(fileURLWithPath: resultsURLString)), - let dictionary = try? JSONSerialization.jsonObject(with: data, options: []), + let data = Data(correctResults.utf8) + guard let dictionary = try? JSONSerialization.jsonObject(with: data, options: []), let cityDictionaries = dictionary as? [[String : Any]] else { fatalError("Correct results JSON doesn't appear to be included in the test bundle.") diff --git a/Solar.xcodeproj/project.pbxproj b/Solar.xcodeproj/project.pbxproj index 9e95b40..c149a99 100644 --- a/Solar.xcodeproj/project.pbxproj +++ b/Solar.xcodeproj/project.pbxproj @@ -11,7 +11,7 @@ 14381E7A1EF96100008E9826 /* Solar.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F7FC5B5A1D469B2700C4D3EB /* Solar.framework */; }; 14456B851EF96AC000D76A4D /* City.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14456B831EF96ABA00D76A4D /* City.swift */; }; 14456B881EF96ACD00D76A4D /* Solar_iOSTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14456B861EF96ACA00D76A4D /* Solar_iOSTests.swift */; }; - 14456B8D1EF96AE200D76A4D /* CorrectResults.json in Resources */ = {isa = PBXBuildFile; fileRef = 14456B891EF96AD900D76A4D /* CorrectResults.json */; }; + 4F334846248D905C00BAAD4E /* CorrectResults.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F334845248D905B00BAAD4E /* CorrectResults.swift */; }; F7FC5B661D469B4E00C4D3EB /* Solar.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7FC5B651D469B4E00C4D3EB /* Solar.swift */; }; /* End PBXBuildFile section */ @@ -31,8 +31,8 @@ 1410E9C01EF12B5A001829A5 /* Solar.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Solar.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 14456B831EF96ABA00D76A4D /* City.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = City.swift; path = "Solar iOSTests/City.swift"; sourceTree = ""; }; 14456B861EF96ACA00D76A4D /* Solar_iOSTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Solar_iOSTests.swift; path = "Solar iOSTests/Solar_iOSTests.swift"; sourceTree = ""; }; - 14456B891EF96AD900D76A4D /* CorrectResults.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = CorrectResults.json; path = "Solar iOSTests/CorrectResults.json"; sourceTree = ""; }; 14456B8A1EF96AD900D76A4D /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = "Solar iOSTests/Info.plist"; sourceTree = ""; }; + 4F334845248D905B00BAAD4E /* CorrectResults.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = CorrectResults.swift; path = "Solar iOSTests/CorrectResults.swift"; sourceTree = ""; }; 97837EAB1E4BB1DE000FEF64 /* Solar_iOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Solar_iOSTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; F7FC5B5A1D469B2700C4D3EB /* Solar.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Solar.framework; sourceTree = BUILT_PRODUCTS_DIR; }; F7FC5B651D469B4E00C4D3EB /* Solar.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Solar.swift; sourceTree = ""; }; @@ -85,8 +85,8 @@ 14456B821EF96AA500D76A4D /* Resources */ = { isa = PBXGroup; children = ( + 4F334845248D905B00BAAD4E /* CorrectResults.swift */, 14456B8A1EF96AD900D76A4D /* Info.plist */, - 14456B891EF96AD900D76A4D /* CorrectResults.json */, ); name = Resources; sourceTree = ""; @@ -251,7 +251,6 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 14456B8D1EF96AE200D76A4D /* CorrectResults.json in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -287,6 +286,7 @@ buildActionMask = 2147483647; files = ( F7FC5B661D469B4E00C4D3EB /* Solar.swift in Sources */, + 4F334846248D905C00BAAD4E /* CorrectResults.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -323,7 +323,6 @@ SDKROOT = watchos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_VERSION = 3.0; TARGETED_DEVICE_FAMILY = 4; WATCHOS_DEPLOYMENT_TARGET = 3.2; }; @@ -350,7 +349,6 @@ PROVISIONING_PROFILE_SPECIFIER = ""; SDKROOT = watchos; SKIP_INSTALL = YES; - SWIFT_VERSION = 3.0; TARGETED_DEVICE_FAMILY = 4; WATCHOS_DEPLOYMENT_TARGET = 3.2; }; @@ -438,7 +436,7 @@ ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 3.0.1; + SWIFT_VERSION = 4.0; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; @@ -491,7 +489,7 @@ MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SWIFT_VERSION = 3.0.1; + SWIFT_VERSION = 4.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; diff --git a/Solar.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Solar.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/Solar.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + From 679aa104f445367c0cbdbbc2389f155de836e76f Mon Sep 17 00:00:00 2001 From: Aaron Freimark Date: Fri, 16 Oct 2020 13:44:53 -0400 Subject: [PATCH 4/4] Added fix for end-of-day calculations. --- Solar iOSTests/Solar_iOSTests.swift | 42 +++++++++++++++++++++++++++++ Solar/Solar.swift | 23 ++++++++++------ 2 files changed, 57 insertions(+), 8 deletions(-) diff --git a/Solar iOSTests/Solar_iOSTests.swift b/Solar iOSTests/Solar_iOSTests.swift index 823fe58..fe89b0a 100644 --- a/Solar iOSTests/Solar_iOSTests.swift +++ b/Solar iOSTests/Solar_iOSTests.swift @@ -159,4 +159,46 @@ final class Solar_iOSTests: XCTestCase { let solar2 = Solar(for: testDate, coordinate: invalidCoordinate2) XCTAssertNil(solar2) } + + + /// Sun and Moon Data for One Day + /// + /// U.S. Naval Observatory + /// Astronomical Applications Department + /// + /// (Longitude W 94° 0', Latitude N 39° 0') + /// + /// Friday, May 3, 2019 Universal Time - 5h + /// Sun + /// Begin civil twilight 05:47 + /// Sunrise 06:16 + /// Sun transit 13:13 + /// Sunset 20:11 + /// End civil twilight 20:40 + /// Moon + /// Moonrise 05:56 + /// Moon transit 12:24 + /// Moonset 19:00 + /// + /// [https://aa.usno.navy.mil/data/docs/RS_OneDay.php](https://aa.usno.navy.mil/data/docs/RS_OneDay.php) + func testPlainLatLon() { + let tdf: DateFormatter = { + let df = DateFormatter() + df.dateFormat = "MM/dd/yyyy HH:mm zzz" + return df + }() + let testCriticalEvening = tdf.date(from: "05/03/2019 19:20 CDT")! + let testLocation: CLLocation = CLLocation(latitude: 39.00, longitude: -94.0) + let expectedSunrise = "05/03/2019 06:16 CDT" + let expectedSunset = "05/03/2019 20:11 CDT" + let timezone = TimeZone(identifier: "America/Chicago")! + let solar = Solar(for: testCriticalEvening, coordinate: testLocation.coordinate, timezone: timezone) + + XCTAssertEqual(solar!.sunrise!.timeIntervalSince1970, tdf.date(from: expectedSunrise)!.timeIntervalSince1970, accuracy: testAccuracy, + "Expected: \(expectedSunrise), Received: \(tdf.string(from: solar!.sunrise!))") + XCTAssertEqual(solar!.sunset!.timeIntervalSince1970, tdf.date(from: expectedSunset)!.timeIntervalSince1970, accuracy: testAccuracy, + "Expected: \(expectedSunset), Received: \(tdf.string(from: solar!.sunset!))") + } + + } diff --git a/Solar/Solar.swift b/Solar/Solar.swift index b244b20..3d0dc9b 100644 --- a/Solar/Solar.swift +++ b/Solar/Solar.swift @@ -34,7 +34,8 @@ public struct Solar { /// The date to generate sunrise / sunset times for public fileprivate(set) var date: Date - + public fileprivate(set) var timezone: TimeZone + public fileprivate(set) var sunrise: Date? public fileprivate(set) var sunset: Date? public fileprivate(set) var civilSunrise: Date? @@ -46,9 +47,10 @@ public struct Solar { // MARK: Init - public init?(for date: Date = Date(), coordinate: CLLocationCoordinate2D) { + public init?(for date: Date = Date(), coordinate: CLLocationCoordinate2D, timezone: TimeZone = TimeZone(identifier: "UTC")!) { self.date = date - + self.timezone = timezone + guard CLLocationCoordinate2DIsValid(coordinate) else { return nil } @@ -91,11 +93,16 @@ public struct Solar { fileprivate func calculate(_ sunriseSunset: SunriseSunset, for date: Date, and zenith: Zenith) -> Date? { guard let utcTimezone = TimeZone(identifier: "UTC") else { return nil } - + // Get the day of the year var calendar = Calendar(identifier: .gregorian) calendar.timeZone = utcTimezone - guard let dayInt = calendar.ordinality(of: .day, in: .year, for: date) else { return nil } + + // Workaround a bug: if it is late enough in MY timezone to be tomorrow in UTC, Solar was returning tomorrow's sun times. + let secondsFromGMT = TimeInterval(self.timezone.secondsFromGMT()) + let dateOffset = date.addingTimeInterval(secondsFromGMT) + + guard let dayInt = calendar.ordinality(of: .day, in: .year, for: dateOffset) else { return nil } let day = Double(dayInt) // Convert longitude to hour value and calculate an approx. time @@ -169,11 +176,11 @@ public struct Solar { let setDate: Date if shouldBeYesterday { - setDate = Date(timeInterval: -(60 * 60 * 24), since: date) + setDate = Date(timeInterval: -(60 * 60 * 24), since: dateOffset) } else if shouldBeTomorrow { - setDate = Date(timeInterval: (60 * 60 * 24), since: date) + setDate = Date(timeInterval: (60 * 60 * 24), since: dateOffset) } else { - setDate = date + setDate = dateOffset } var components = calendar.dateComponents([.day, .month, .year], from: setDate)