用于在 Swift 中获取地点和时间的日出和日落时间的可扩展且轻量级的软件包。
获取日出或日落时间对于许多创意和实际应用都很有用。
理想情况下,开发者会使用第一方解决方案。Apple 的 WeatherKit 提供了日出和日落时间,但 Apple 开发者每月只能获得 500,000 次免费调用。 值得庆幸的是,我们可以使用设备上的算法计算给定地点和时间的日出或日落时间。
此软件包的设计核心原则如下
可扩展性: 人们开发了不同的算法来计算日出和日落时间,结果各不相同。此软件包提供了一种通过 SunriseSunsetProvider
类型轻松添加其他算法的方法。
现代性: 此软件包遵循最新的 Swift 风格,并通过 Swift Package Manager 分发。
测试覆盖率: 单元测试验证了提供的方法是否按预期工作,因此您可以比代码片段更放心地引入此代码。
要获取日出时间,请使用 SwiftSunriseSunset.sunrise(...)
方法
let sunrise: Date? = SwiftSunriseSunset.sunrise(
for: Date.now,
in: TimeZone.current,
at: CLLocationCoordinate2D(
latitude: 37.773972,
longitude: -122.431297
)
)
SwiftSunriseSunset.sunset(...)
方法的用法是相同的。
这两种方法都有重载以显式传递纬度和经度,因此无需导入 CoreLocation 即可使用此软件包。
感谢 Paul Schlyter,他在 1992 年发布了一个用于计算太阳时间的 C 算法 到公共领域。太阳时间计算的主要算法源自他的原始代码。
这受到了 Neil Tiffin (GitHub: neilt) 工作的启发,他在 2019 年将 Schlyter 的太阳时间算法移植到 Swift,并以 gist 的形式发布。
此软件包在 MIT 许可证下发布。 有关详细信息,请参阅 LICENSE。