有没有一种惯用的Rust方法来获取给定月份的天数?我查看了chrono,但在文档中没有找到相关内容。
我正在寻找类似于Python的calendar.monthrange
或C#中的DateTime.DaysInMonth
可以处理闰年的工具。
有没有一种惯用的Rust方法来获取给定月份的天数?我查看了chrono,但在文档中没有找到相关内容。
我正在寻找类似于Python的calendar.monthrange
或C#中的DateTime.DaysInMonth
可以处理闰年的工具。
pub fn get_days_from_month(year: i32, month: u32) -> i64 {
NaiveDate::from_ymd(
match month {
12 => year + 1,
_ => year,
},
match month {
12 => 1,
_ => month + 1,
},
1,
)
.signed_duration_since(NaiveDate::from_ymd(year, month, 1))
.num_days()
}
chrono
crate 的 NaiveDate::signed_duration_since
:use chrono::NaiveDate;
fn main() {
let year = 2018;
for (m, d) in (1..=12).map(|m| {
(
m,
if m == 12 {
NaiveDate::from_ymd(year + 1, 1, 1)
} else {
NaiveDate::from_ymd(year, m + 1, 1)
}.signed_duration_since(NaiveDate::from_ymd(year, m, 1))
.num_days(),
)
}) {
println!("days {} in month {}", d, m);
}
}