Adhan Swift
Adhan Swift 是一个用于计算伊斯兰祈祷时间的经过良好测试和良好文档的库。Adhan Swift 支持 Swift 4.0、Swift 4.2、Swift 5.0 和 Objective-C。
所有的天文计算都是来自书籍《“天文学算法”》(Jean Meeus 著)的高精度方程。这本书由美国海军天文台的天文应用部门和美国国家海洋和大气管理局的地球系统研究实验室推荐。
其他语言中的 Adhan 实现,可以在父仓库 Adhan 中找到。
安装
CocoaPods
要在 CocoaPods 中使用,请在您的 Podfile 中添加以下内容
pod 'Adhan'
Carthage
要在 Carthage 中使用,请在您的 Cartfile 中添加以下内容
github "batoulapps/adhan-swift" "master"
Swift 包管理器
对于 SPM,请在您的 Package.swift
文件中添加以下内容
// swift-tools-version:4.2
dependencies: [
.package(url: "https://github.com/batoulapps/adhan-swift", .branch("master")),
]
手动方式
您也可以手动添加 Adhan。
- 下载源代码。
- 将 Adhan.xcodeproj 添加为您的应用程序项目中的子项目。
- 将 Adhan.framework 拖到您的应用程序目标的“已链接框架和库”中。
使用方法
为了获取祷告时间,请初始化一个 PrayerTimes
结构体,传入坐标、日期和计算参数。
let prayers = PrayerTimes(coordinates: coordinates, date: date, calculationParameters: params)
初始化参数
坐标
创建一个包含您想要获取祷告时间位置的纬度和经度的 Coordinates
结构体。
let coordinates = Coordinates(latitude: 35.78056, longitude: -78.6389)
日期
为了避免与时区的混淆,传递的日期参数应为 DateComponents
类的实例。年份、月份和日期组件需要填写。其他所有组件都将被忽略。年份、月份和日期值应为您想要计算祷告时间的本地日期。这些日期组件应按公历(格里高利历)编制。
let cal = Calendar(identifier: Calendar.Identifier.gregorian)
let date = cal.dateComponents([.year, .month, .day], from: Date())
计算参数 & 计算方法
其他所需信息包含在 CalculationParameters
结构体中。
祷告时间
一旦初始化了 PrayerTimes
结构体,它将包含所有五种祷告时间和日出时间。祷告时间将是 instances of NSDate,因此将引用宇宙时间的固定点。为了以本地时区显示这些时间,您需要创建一个日期格式化器并设置适当的时区。
let formatter = DateFormatter()
formatter.timeStyle = .medium
formatter.timeZone = TimeZone(identifier: "America/New_York")!
print("fajr \(formatter.string(from: prayers.fajr))")
完整示例
let cal = Calendar(identifier: Calendar.Identifier.gregorian)
let date = cal.dateComponents([.year, .month, .day], from: Date())
let coordinates = Coordinates(latitude: 35.78056, longitude: -78.6389)
var params = CalculationMethod.moonsightingCommittee.params
params.madhab = .hanafi
if let prayers = PrayerTimes(coordinates: coordinates, date: date, calculationParameters: params) {
let formatter = DateFormatter()
formatter.timeStyle = .medium
formatter.timeZone = TimeZone(identifier: "America/New_York")!
print("fajr \(formatter.string(from: prayers.fajr))")
print("sunrise \(formatter.string(from: prayers.sunrise))")
print("dhuhr \(formatter.string(from: prayers.dhuhr))")
print("asr \(formatter.string(from: prayers.asr))")
print("maghrib \(formatter.string(from: prayers.maghrib))")
print("isha \(formatter.string(from: prayers.isha))")
}
便捷工具
PrayerTimes
结构体具有获取当前祷告和下一次祷告的函数。您还可以获取指定祷告的时间,这使得动态显示直到下一次祷告的倒计时变得更容易。
let prayerTimes = PrayerTimes(coordinates: coordinates, date: date, calculationParameters: params)
let current = prayerTimes.currentPrayer()
let next = prayerTimes.nextPrayer()
let countdown = prayerTimes.time(for: next)
圣行时间
Adhan 库还可以计算圣行时间。给定一个 PrayerTimes
实例,您可以获取一个包含 Qiyam 时间的 SunnahTimes
结构体。
if let sunnahTimes = SunnahTimes(from: todayPrayers) {
print(dateFormatter.string(from: sunnahTimes.lastThirdOfTheNight)
print(dateFormatter.string(from: sunnahTimes.middleOfTheNight)
}
麦加指向方向
获取从指定坐标出发的麦加指向角的度数(从北开始测量)。
let nyc = Coordinates(latitude: 40.7128, longitude: -74.0059)
let qiblaDirection = Qibla(coordinates: nyc).direction
贡献
Adhan公开提供,为所有开发者提供了一套经过良好测试和良好文档化的伊斯兰祈祷时间库。我们接受特性贡献,前提是它们有适当的文档并包括了适当的单元测试。我们还在寻找不同地点的祈祷时间的单元测试贡献,要求比较值的来源有恰当的文档说明。
许可
Adhan遵守MIT许可。更多信息请参阅LICENSE文件。