Zemen - የ ኢትዮጵያ ቀን መቁጠሪያ
Introduction
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 found here
Installation
cargo add zemen
Usage
use time::{Date, Month};
use zemen::{Zemen, Werh};
use zemen::error;
fn main() -> Result<(), error::Error> {
let qen = Zemen::from_eth_cal(1992, Werh::Tahasass, 22)?;
let date = Date::from_calendar_date(2000, Month::January, 1)?;
let converted_day = Date::from(&qen);
let converted_qen = Zemen::from(&date);
println!("date: {}", converted_day);
println!("qen: {}", converted_qen);
println!("year: {}", qen.year());
println!("month: {}", qen.month());
println!("month(number): {}", qen.month() as u8);
println!("day: {}", qen.day());
let nege = qen.next();
println!("nege: {}", nege);
let tilant = nege.previous().previous();
println!("tilant: {}", tilant);
let qetay_wer = tilant.month().next();
println!("wer: {}", qetay_wer);
let yalef_wer = tilant.month().previous();
println!("wer: {}", yalef_wer);
Ok(())
}
Formatting
use zemen::*;
fn main() -> Result<(), error::Error> {
let qen = Zemen::from_eth_cal(2015, Werh::Tir, 10)?;
let formatted = qen.format("ዛሬ DD, MMM D-YYYY ነው");
println!("{}", formatted);
Ok(())
}