holiday-cn

Crates.ioholiday-cn
lib.rsholiday-cn
version0.1.20250331
created_at2025-01-02 07:40:04.824288+00
updated_at2025-03-31 15:07:29.995412+00
descriptionChinese holiday library
homepage
repository
max_upload_size
id1501328
size220,588
Jingyu (washanhanzi)

documentation

README

holiday-cn-rust

A Rust library for checking Chinese holidays and workdays. Data is automatically updated daily.

Crates.io Documentation

Features

  • Check if a date is a holiday or workday in China

Installation

Add this to your Cargo.toml:

[dependencies]
holiday-cn = "0.1"

Usage

Basic Usage

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(())
}

Error Handling

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),
    }
}

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Commit count: 0

cargo fmt