#日期 #转换 #目标 #公历 #Wasm #伊斯兰教历 #伊斯兰教历法

hijri_date

提供伊斯兰教历与公历日历之间的转换功能(Wasm 目标)

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 每月下载量

MIT 许可证

72KB
788

HijriDate-rs

Released API docs

在伊斯兰教历和公历日期之间进行转换。(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

Chrono

依赖项

~1–1.4MB
~22K SLoC