6 个版本
0.1.6 | 2024年7月1日 |
---|---|
0.1.5 | 2024年6月17日 |
0.1.4 | 2024年1月18日 |
0.1.3 | 2023年2月20日 |
0.1.1 | 2023年1月26日 |
#90 在 日期和时间
每月 59 次下载
48KB
822 代码行
Zemen - 埃塞俄比亚日期库
简介
一个日期转换库,用于在埃塞俄比亚历和公历之间转换日期。我们有一个自定义的 struct
来表示埃塞俄比亚日期,即 Zemen
,我们使用外部库 time
,特别是 time::Date
,来表示公历日期。
该库使用 Beyene-Kudlek 算法在 jdn(儒略日数)和埃塞俄比亚日历之间进行转换。并且使用 time 库在 jdn(儒略日数)和公历日期之间进行转换。
文档在此处找到
安装
cargo add zemen
用法
use time::{Date, Month};
use zemen::{Zemen, Werh};
use zemen::error;
fn main() -> Result<(), error::Error> {
// creating dates
// Werh means month in Ge'ez
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);
// 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);
Ok(())
}
格式化
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 ነው");
// prints: ዛሬ ረቡዕ, ጥር 10-2015 ነው
println!("{}", formatted);
Ok(())
}
依赖项
~1–1.5MB
~31K SLoC