# Crate zemen

Expand description

## §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 zemen::{Zemen, Werh};

// creating dates
// Werh means month in Ge'ez
let qen = Zemen::from_eth_cal(1992, Werh::Tahasass, 22)?;

// 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 qetay_wer = tilant.month().next();
println!("wer: {}", qetay_wer);

// get the previous month
let yalef_wer = tilant.month().previous();
println!("wer: {}", yalef_wer);``````

### §Formatting

``````let qen = Zemen::from_eth_cal(2015, Werh::Tir, 10)?;
let formatted = qen.format("ዛሬ %a, %b %d-%Y ነው");

// prints: ዛሬ ረቡዕ, ጥር 10-2015 ነው
println!("{}", formatted);``````

### §`time` feature

Assuming you’ve enabled the `time` feature, you can convert between `time::Date` and `zemen::Zemen`.

``````

let qen = Zemen::from_eth_cal(1992, Werh::Tahasass, 22)?;
let date = Date::from_calendar_date(2000, Month::January, 1)?;

// conversion
let converted_day = Date::from(&qen);
let converted_qen = Zemen::from(&date);

println!("date: {}", converted_day);
println!("qen: {}", converted_qen);``````

## Modules§

• Todo: Documentations

## Enums§

• Weekdays of the Ethiopian calendar, `Samint` directly translates to week, but in our case it is enough
• Months of the Ethiopian year. `Werh` means month in Ge’ez.