我需要chrono::Date
今年一周的第一个和最后一个日期。
我有两个问题,首先我无法解析chrono
今年的星期,第二我无法获得本周的第一个/最后一个日期。(这里有很多其他语言的解决方案,但没有rust)
TLDR:我需要一个这样的函数:
fn x(week: isize) -> (Date<Local>, Date<Local>)
元组为(一周的第一天,一周的最后一天)。
如果我正确理解你的问题,你可以使用这样的东西:
use chrono::{NaiveDate, Weekday, Datelike};
fn week_bounds(week: u32) -> (NaiveDate, NaiveDate) {
let current_year = chrono::offset::Local::now().year();
let mon = NaiveDate::from_isoywd(current_year, week, Weekday::Mon);
let sun = NaiveDate::from_isoywd(current_year, week, Weekday::Sun);
(mon, sun)
}
Run Code Online (Sandbox Code Playgroud)
这是假设 ISO8601 约定(星期一为第一天,星期日为最后一天,ISO 周编号)。它还返回NaiveDate
而不是Date<Local>
,您可以使用以下方法获取:
let date_time: DateTime<Local> = Local.from_local_datetime(&naive).unwrap();
Run Code Online (Sandbox Code Playgroud)
如果需要的话。
你可以尝试我的箱子https://crates.io/crates/now,它提供了非常方便的方法来开始或结束一周。
use now::DateTimeNow;
let now = Utc::now();
now.beginning_of_week();
Run Code Online (Sandbox Code Playgroud)
编辑:
对于 chrono,您可以使用它datetime.iso_week().week()
来获取 iso 周数。或者您可以使用now
viadatetime.week_of_year()
这是预览方法的简单包装器。
归档时间: |
|
查看次数: |
3229 次 |
最近记录: |