A date conversion crate to convert between ethiopian and gregorian dates. We
have a custom struct
to represent ethiopian date, i.e. Zemen
, and we are
using an external crate time
, and specifically time::Date
, to represent
gregorian dates.
The crate uses the Beyene-Kudlek algorithm to convert between jdn (Julian Day number) and ethiopic calender. And the time crate to convert between jdn (Julian Day number) and gregorian date.
Docs can be found here.
sh
cargo add zemen
```rust use time::{Date, Month}; use zemen::{Zemen, Werh};
// creating dates // Werh means month in Ge'ez let qen = Zemen::fromethcal(1992, Werh::Tahasass, 22)?; let date = Date::fromcalendardate(2000, Month::January, 1)?;
// conversion let convertedday = Date::from(&qen); let convertedqen = Zemen::from(&date);
println!("date: {}", convertedday); println!("qen: {}", convertedqen);
// accessing individual element println!("year: {}", qen.year()); println!("month: {}", qen.month()); println!("month(number): {}", qen.month() as u8); println!("day: {}", qen.day());
// get the next, and previous date. next
and previous
consume self
let nege = qen.next();
println!("nege: {}", nege);
let tilant = nege.previous().previous();
println!("tilant: {}", tilant);
// get the next month let qetaywer = tilant.month().next(); println!("wer: {}", qetaywer);
// get the previous month let yalefwer = tilant.month().previous(); println!("wer: {}", yalefwer); ```