问题描述
我尝试创建日期选择器,并且需要在日期月份之间导航
let current = NaiveDate::parse_from_str("2020-10-15","%Y-%m-%d").unwrap();
如何生成打击日期
2020-11-15
解决方法
可以解析该字符串,并使用month + 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);
}
通过添加Duration::days(integer)
还有另一种选择,但是一个人需要知道一个月中有多少天。
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);
}