Logo showing the Sun rising over a mountain with birds flying in the foreground

Swift 日出/日落

用于在 Swift 中获取地点和时间的日出和日落时间的可扩展且轻量级的软件包。

动机

获取日出或日落时间对于许多创意和实际应用都很有用。

理想情况下,开发者会使用第一方解决方案。Apple 的 WeatherKit 提供了日出和日落时间,但 Apple 开发者每月只能获得 500,000 次免费调用。 值得庆幸的是,我们可以使用设备上的算法计算给定地点和时间的日出或日落时间。

此软件包的设计核心原则如下

用法

要获取日出时间,请使用 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