2 个版本
新版本 0.1.1 | 2024 年 8 月 22 日 |
---|---|
0.1.0 | 2024 年 8 月 22 日 |
#140 in 日期和时间
23KB
254 代码行
工作日
workdays
是一个 Rust 库,用于计算工作日和处理工作日历,受 Excel 中的 WORKDAY 函数启发。它提供了定义自定义工作周、添加假日以及基于给定的工作日数计算日期的功能。
特性
- 基于工作日计算结束日期
- 计算两个日期之间的工作日数
- 解析和处理工作日历配置(YAML 或 JSON)
- 支持自定义工作日和假日
- 灵活的工作日解析
安装
将 workdays
添加到您的 Cargo.toml
中的依赖项
cargo add workdays
使用
以下是一个快速示例
use workdays::WorkCalendar;
use chrono::NaiveDate;
use std::str::FromStr;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let mut calendar = WorkCalendar::new();
calendar.add_holiday(NaiveDate::from_ymd_opt(2023, 12, 25).unwrap());
calendar.set_work_days("Mon,Tue,Wed,Thu,Fri")?;
let start_date = NaiveDate::from_ymd_opt(2023, 8, 21).unwrap();
let days_worked = 20;
let (end_date, calendar_duration) = calendar.compute_end_date(start_date, days_worked)?;
println!("End date: {}", end_date);
println!("Calendar duration: {} days", calendar_duration.num_days());
// Using FromStr to create a WorkCalendar from YAML or JSON
let config = r#"
work_days:
- Monday
- Tuesday
- Wednesday
holidays:
- 2023-12-25
"#;
let custom_calendar = WorkCalendar::from_str(config)?;
println!("Is Monday a work day? {}", custom_calendar.is_work_day(&chrono::Weekday::Mon));
Ok(())
}
许可证
本项目采用 MIT 许可证 - 有关详细信息,请参阅 LICENSE 文件。
贡献
欢迎贡献!请随时提交拉取请求。
致谢
- 受 Excel 中的 WORKDAY 函数启发
依赖项
~3–4.5MB
~87K SLoC