Convert between hijri and gregorian date. (with wasm target)
The algorithm used has the following limits:
| | Minimum | Maximum | |-----------|---------|---------| | Hijri | 1356 | 1499 | | Gregorian | 1938 | 2076 |
From version 0.4.0
and onwards the MSRV is 1.51
Hijri → Gregorian
```rust use hijri_date::HijriDate;
let hd = HijriDate::fromhijri(1439,11,19); asserteq!((2018,8,1), (hd.yeargr(), hd.monthgr(), hd.day_gr())); ```
Gregorian → Hijri
```rust use hijri_date::HijriDate;
let hd = HijriDate::fromgr(2000,07,31); asserteq!((1421,4,29), (hd.year(), hd.month(), hd.day())); ```
```rust use hijri_date::HijriDate;
let hd1 = HijriDate::fromhijri(1500, 12, 30); let hd2 = HijriDate::fromhijri(1356, 1, 1); assert!(hd1 > hd2); ```
Subtract duration from a day
```rust use hijri_date::{Duration,HijriDate};
let hd1 = HijriDate::fromhijri(1420, 06, 15); let hd2 = HijriDate::fromhijri(1420, 05, 29); asserteq!(hd1 - Duration::days(16), hd_2); ```
Subtract a day from another to get a duration
```rust use hijri_date::{Duration,HijriDate};
let hd1 = HijriDate::fromhijri(1356, 06, 15); let hd2 = HijriDate::fromhijri(1356, 06, 7); asserteq!(hd1 - hd_2, Duration::days(8)); ```
Hijri day and month name
```rust use hijri_date::HijriDate;
let hd = HijriDate::from_hijri(1439,11,18); println!("{}", hd.format("%Y %M %D")); ```
``` hijri
%Y hijriyear %m hijrimonth %d hijriday %D hijridayname %M hijrimonthname %l hijrimonth_len
gregorian
%gY gregorianyear %gm gregorianmonth %gd gregorianday %gD gregoriandayname %gM gregorianmonth_name ```
To compile to Wasm run:
cargo build --release --target wasm32-unknown-unknown
Deno bindings are exposed at deno
deno run deno_mod.ts
wasm-bindgen --target deno $CARGO_TARGET_DIR/wasm32-unknown-unknown/release/hijri_date.wasm --out-dir deno
I translated Tytkal's Python library to Rust.
Original algorithm author
Suhail Alkowaileet
Python version author
Khalid Al-hussayen