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本身的支持。