Определить количество дней в месяце в Rust

Для определения количества дней в месяце на языке программирования Rust можно использовать встроенную библиотеку хроно. Вот несколько методов, которые вы можете использовать:

  1. Использование перечисления Monthиз библиотеки хронографа:

    use chrono::{Month, NaiveDate};
    fn get_days_in_month(year: i32, month: Month) -> u32 {
    let date = NaiveDate::from_ymd_opt(year, month.number_from_month(), 1);
    match date {
        Some(date) => date.with_day0(0).num_days_from_ce() as u32,
        None => 0,
    }
    }

    Пример использования:

    fn main() {
    let year = 2024;
    let month = Month::January;
    let days_in_month = get_days_in_month(year, month);
    println!("Number of days in {} {}: {}", month, year, days_in_month);
    }
  2. Использование метода Month::days_in_month():

    use chrono::Month;
    fn get_days_in_month(year: i32, month: Month) -> u32 {
    month.days_in_month(year)
    }

    Пример использования:

    fn main() {
    let year = 2024;
    let month = Month::January;
    let days_in_month = get_days_in_month(year, month);
    println!("Number of days in {} {}: {}", month, year, days_in_month);
    }
  3. Использование метода NaiveDate::signed_duration_since():

    use chrono::{Month, NaiveDate};
    fn get_days_in_month(year: i32, month: Month) -> u32 {
    let start_date = NaiveDate::from_ymd(year, month.number_from_month(), 1);
    let end_date = NaiveDate::from_ymd(year, month.number_from_month() + 1, 1);
    let duration = end_date.signed_duration_since(start_date);
    duration.num_days() as u32
    }

    Пример использования:

    fn main() {
    let year = 2024;
    let month = Month::January;
    let days_in_month = get_days_in_month(year, month);
    println!("Number of days in {} {}: {}", month, year, days_in_month);
    }