Rust 如何向计时日期添加一个月?

Rust 如何向计时日期添加一个月?,rust,rust-chrono,Rust,Rust Chrono,我正在尝试创建一个日期选择器,我需要在两个月之间导航 let current=NaiveDate::从_str(“2020-10-15,%Y-%m-%d”)解析_。展开(); 如何生成日期2020-11-15?可以解析字符串并使用月份+1创建另一个日期 use chrono::{NaiveDate, Datelike}; fn main() { let naive = NaiveDate::parse_from_str("2020-10-15", "%

我正在尝试创建一个日期选择器,我需要在两个月之间导航

let current=NaiveDate::从_str(“2020-10-15,%Y-%m-%d”)解析_。展开();

如何生成日期
2020-11-15

可以解析字符串并使用
月份+1创建另一个日期

use chrono::{NaiveDate, Datelike};

fn main() {

    let naive = NaiveDate::parse_from_str("2020-10-15", "%Y-%m-%d").unwrap();
    let another = NaiveDate::from_ymd(naive.year(), naive.month() + 1, naive.day());
    
    println!("{:?}", another);
}

还有另一种选择,添加
持续时间::天(整数)
,但需要知道一个月有多少天

use chrono::{ NaiveDate, Duration};

fn main() {

    let naive = NaiveDate::parse_from_str("2020-10-15", "%Y-%m-%d").unwrap() ;
    let another = naive + Duration::days(31);
    
    println!("{:?}", another);
}

下面是要在第12个月后添加的简单条件分支:

use chrono::{NaiveDate, Datelike};

fn main() {

    let naive = NaiveDate::parse_from_str("2020-12-15", "%Y-%m-%d").unwrap();
    let mut y = naive.year();
    let mut m = naive.month();
    let d = naive.day();
    if naive.month() == 12 {
        y += 1;
        m = 1;
    } else {
        m += 1;
    }
    let another = NaiveDate::from_ymd(y, m, d);
    
    println!("{:?}", another);
}

第12个月怎么样?
NaiveDate::from_ymd(naive.year(),naive.month()+2,naive.day())对于第12个月的课程,它会惊慌失措。为什么要使用12+1?当我在现实世界中有类似于2020-12-15的东西时,若加上一个月,它将更改为2021-01-15,我需要一个函数来完成它,因为这段代码仍然有一个bug。下个月可能没有足够的天数容纳day参数。我认为这类行动最终应该得到Chrono本身的支持。