17 个版本
0.5.1 | 2023年8月16日 |
---|---|
0.5.0 | 2023年8月16日 |
0.4.1 | 2022年10月23日 |
0.4.0 | 2021年3月25日 |
0.1.6 | 2018年8月6日 |
#83 in 日期和时间
47 每月下载量
72KB
788 行
HijriDate-rs
在伊斯兰教历和公历日期之间进行转换。(Wasm 目标)
限制
所使用的算法有以下限制
最小值 | 最大值 | |
---|---|---|
伊斯兰教历 | 1356 | 1499 |
公历 | 1938 | 2076 |
最小 Rust 版本
从版本 0.4.0
开始,MSRV 是 1.51
用法
转换
- 伊斯兰教历 → 公历
use hijri_date::HijriDate;
let hd = HijriDate::from_hijri(1439,11,19);
assert_eq!((2018,8,1), (hd.year_gr(), hd.month_gr(), hd.day_gr()));
- 公历 → 伊斯兰教历
use hijri_date::HijriDate;
let hd = HijriDate::from_gr(2000,07,31);
assert_eq!((1421,4,29), (hd.year(), hd.month(), hd.day()));
比较
use hijri_date::HijriDate;
let hd_1 = HijriDate::from_hijri(1500, 12, 30);
let hd_2 = HijriDate::from_hijri(1356, 1, 1);
assert!(hd_1 > hd_2);
杂项
- 从一个日期减去持续时间
use hijri_date::{Duration,HijriDate};
let hd_1 = HijriDate::from_hijri(1420, 06, 15);
let hd_2 = HijriDate::from_hijri(1420, 05, 29);
assert_eq!(hd_1 - Duration::days(16), hd_2);
- 从一个日期减去另一个日期以获取持续时间
use hijri_date::{Duration,HijriDate};
let hd_1 = HijriDate::from_hijri(1356, 06, 15);
let hd_2 = HijriDate::from_hijri(1356, 06, 7);
assert_eq!(hd_1 - hd_2, Duration::days(8));
格式化
- 伊斯兰教历日和月份名称
use hijri_date::HijriDate;
let hd = HijriDate::from_hijri(1439,11,18);
println!("{}", hd.format("%Y %M %D"));
- 格式化指南
hijri
%Y hijri_year
%m hijri_month
%d hijri_day
%D hijri_day_name
%M hijri_month_name
%l hijri_month_len
gregorian
%gY gregorian_year
%gm gregorian_month
%gd gregorian_day
%gD gregorian_day_name
%gM gregorian_month_name
Wasm
要编译到 Wasm,运行
cargo build --release --target wasm32-unknown-unknown
Deno 绑定已公开,有关更多信息,请参阅 ./deno
致谢
我将 Tytkal 的 Python 库翻译成了 Rust。
-
原始算法作者
Suhail Alkowaileet
-
Python 版本作者
Khalid Al-hussayen
依赖项
~1–1.4MB
~22K SLoC