| Crates.io | holiday-cn |
| lib.rs | holiday-cn |
| version | 0.1.20250331 |
| created_at | 2025-01-02 07:40:04.824288+00 |
| updated_at | 2025-03-31 15:07:29.995412+00 |
| description | Chinese holiday library |
| homepage | |
| repository | |
| max_upload_size | |
| id | 1501328 |
| size | 220,588 |
A Rust library for checking Chinese holidays and workdays. Data is automatically updated daily.
Add this to your Cargo.toml:
[dependencies]
holiday-cn = "0.1"
use holiday_cn::{is_workday, is_offday};
use time::Date;
fn main() -> Result<(), time::Error> {
// Check if a specific date is a workday
let date = Date::from_calendar_date(2025, time::Month::January, 1)?;
let (is_work, holiday_name) = is_workday(&date.format(&format_description::parse("[year]-[month]-[day]")?)?)?;
println!("2025-01-01 is{} a workday", if is_work { "" } else { " not" });
if let Some(name) = holiday_name {
println!("Holiday name: {}", name);
}
// Check if current time is an off-day
let (is_off, holiday_name) = is_now_offday();
println!("Current time is{} an off-day", if is_off { "" } else { " not" });
if let Some(name) = holiday_name {
println!("Holiday name: {}", name);
}
Ok(())
}
use holiday_cn::is_offday;
use time::Date;
fn main() {
// Example with error handling
let date_str = "2025-01-01";
match Date::parse(date_str, &format_description::parse("[year]-[month]-[day]").unwrap()) {
Ok(date) => {
match is_offday(&date_str) {
Ok((is_off, holiday_name)) => {
println!("{} is{} an off-day", date_str, if is_off { "" } else { " not" });
if let Some(name) = holiday_name {
println!("Holiday name: {}", name);
}
}
Err(e) => println!("Error checking holiday: {}", e),
}
}
Err(e) => println!("Error parsing date: {}", e),
}
}
Contributions are welcome! Please feel free to submit a Pull Request.