1 个不稳定版本
0.0.1 | 2022年8月11日 |
---|
#9 in #prayer
99KB
2.5K SLoC
Salati
Salati 是一个 Rust 语言编写的程序,根据最新的科学研究计算祷告时间。
免责声明 本存储库中的代码主要来自 salah。通常,我会向其他存储库提交一个 PR,但由于我在某些地方做了许多有争议的更改,我决定创建一个新的存储库。
原因
创建新存储库的主要动机如下
- Web Assembly 支持:计划将其集成到 muslim-box
- 对用户假设/调整:当我使用第三方应用程序/库时,我的主要担忧是不知道假设/修正/调整,这让我在祷告时间上感到困惑。请注意,我们依赖这些信息来知道伊姆萨克、开斋和祷告结束时间。
- 对祷告时间计算有更多控制权
- 使用哪个黄昏时间来计算伊沙时间?
- 如何计算极圈地区的祷告时间?
使用方法
将以下内容添加到您的 Cargo.toml 文件中的
[dependencies]
salah = "0.0.0"
要获取祷告时间,请执行以下操作
use salati::prelude::*;
const tunis = Coordinates::new(36.8065, 10.1815);
const date = Utc.ymd(2022, 8, 1);
const params = ParametersBuilder::with(Method::Tunisia, Madhab::Shafi);
const prayers = PrayerTimes::new(date, coordinates, params);
println!("fajr: {}", prayers.fajr.datetime.unwrap());
println!("sunrise: {}", prayers.sunrise.datetime.unwrap());
println!("dhuhr: {}", prayers.dhuhr.datetime.unwrap());
println!("asr: {}", prayers.asr.datetime.unwrap());
println!("maghrib: {}", prayers.maghrib.datetime.unwrap());
println!("isha: {}", prayers.isha.datetime.unwrap());
配置
您可以根据以下方式配置您的祷告时间计算器
参数 | 描述 |
---|---|
method |
用于填充已知穆斯林组织使用的配置的方法 |
fajr_angle |
用于计算法吉尔的太阳角度 |
isha_angle |
用于计算伊沙的太阳角度 |
isha_interval |
在穆尔吉布之后的时间(如果设置,伊沙的时间将是穆尔吉布加上 isha_interval ) |
madhab |
用于计算阿斯尔时间 |
twilight |
用于计算伊沙时间 |
high_latitude_rule |
用于设置法吉尔的最低时间和伊沙的最高时间 |
method_adjustments |
时间调整方法 |
adjustments |
每个祷告时间的自定义祷告时间调整(分钟)。默认情况下,所有值都是 0 。 |
方法
提供了一些权威机构计算祷告时间的预设配置。
值 | 描述 |
---|---|
MuslimWorldLeague |
穆斯林世界联盟。法吉尔角度:18,伊沙角度:17 |
Egyptian |
埃及土地测量总署。法吉尔角度:19.5,伊沙角度:17.5 |
Karachi |
伊斯兰科学大学,卡拉奇。法吉尔角度:18,伊沙角度:18 |
UmmAlQura |
麦加乌姆·阿尔·库里亚大学。法吉尔角度:18.5,伊沙间隔:90。《注意》:在斋月期间,您应添加一个 +30 分钟 的自定义调整以调整伊沙时间。 |
Dubai |
阿联酋使用的方法。黎明角:18.2,宵礼角:18.2。 |
卡塔尔 |
卡塔尔使用的乌姆·阿尔-库里修改版本。黎明角:18,宵礼间隔:90。 |
科威特 |
科威特国家使用的方法。黎明角:18,宵礼角:17.5 |
望月委员会 |
望月委员会。黎明角:18,宵礼角:18。同时使用季节调整值。 |
新加坡 |
新加坡使用的方法。黎明角:20,宵礼角:18。 |
北美 |
称为ISNA方法。黎明角:15,宵礼角:15 |
其他 |
黎明角:0,宵礼角:0。这是手动初始化 Parameters 结构体的默认值。 |
教法学派
此设置仅用于计算晡时祈祷时间
值 | 描述 |
---|---|
沙菲教法学派 |
将导致晡时时间较早(默认) |
哈纳菲教法学派 |
将导致晡时时间较晚 |
晨昏线 🔜
用于计算宵礼祈祷时间
值 | 描述 |
---|---|
红色 |
较早的晡时时间(默认) |
白色 |
较晚的晡时时间 |
高纬度规则
调整黎明/宵礼祈祷时间的规则,当我们的祈祷时间无效时,将回退到此方法 🔜
值 | 描述 |
---|---|
午夜时分 |
黎明永远不会早于午夜,宵礼永远不会晚于午夜 |
夜第七分之一 |
黎明永远不会早于夜的最后七分之一开始,宵礼永远不会晚于夜的第一七分之一结束 |
晨昏角 |
类似于夜第七分之一,但使用夜的时间分数是黎明角/60和宵礼角/60(默认) |
不确定使用哪种策略?使用 recommended
方法
const high_latitude_resolution = HighLatitudeRule::recommended(coordinates);
极圈分辨率 🔜
用于解决极圈内无法定义的祈祷时间,太阳不落不升。
值 | 描述 |
---|---|
最近地点 |
找到可以计算日出和日落祈祷时间的最接近的位置 |
最近一天 |
找到可以计算日出和日落祈祷时间的最接近的日期(向前或向后) |
未解决 |
(默认)使所有祈祷都未定义 |
UmmAlQura |
根据乌姆·阿尔-库里位置计算祈祷时间 |
开发
- 克隆存储库
- 设置
pre-commit
pipenv install
pipenv run pre-commit install
- 将您的更改合并到一个新分支中
- 为您的更改添加单元测试
- 运行单元测试:
cargo test
依赖项
~5MB
~89K SLoC