idea_common/
date.rs

1use chrono::{Local, NaiveDate, NaiveDateTime, NaiveTime, Datelike};
2
3// 编译时间字符串
4pub fn parse_ymd(date_str: &str) -> NaiveDateTime {
5    let naive_date = NaiveDate::parse_from_str(date_str, "%Y-%m-%d").expect("Failed to parse date");
6    let time = NaiveTime::from_hms_opt(0, 0, 0);
7    NaiveDateTime::new(naive_date, time.unwrap())
8}
9pub fn parse_ymd_hms(datetime_str: &str) -> NaiveDateTime {
10    match NaiveDateTime::parse_from_str(datetime_str, "%Y-%m-%d %H:%M:%S") {
11        Ok(naive_datetime) => { naive_datetime },
12        Err(err) => {
13            log::error!("datetime.parse error {:?} {:?}", datetime_str, err);
14            Local::now().naive_local()
15        }
16    }
17}
18
19// 获取当前日期是一年中的第几周
20pub fn get_week_index() -> u32 {
21    Local::now().iso_week().week()
22}
23
24// 当前时间并格式化为 "%Y-%m-%d %H:%M:%S"
25pub fn get_cur_datetime() -> String {
26    Local::now().format("%Y-%m-%d %H:%M:%S").to_string()
27}
28
29// 当前时间并格式化为 "%Y-%m-%d %H:%M:%S"
30pub fn get_cur_date_str() -> String {
31    Local::now().format("%Y-%m-%d").to_string()
32}
33pub fn get_cur_datetime_str() -> String {
34    Local::now().format("%Y-%m-%d %H:%M:%S").to_string()
35}
36pub fn get_cur_local_datetime() -> NaiveDateTime { Local::now().naive_local() }
37pub fn format_datetime_ymd(datetime: NaiveDateTime) -> String { datetime.format("%Y-%m-%d").to_string() }
38pub fn format_datetime_ymd_hms(datetime: NaiveDateTime) -> String { datetime.format("%Y-%m-%d %H:%M:%S").to_string() }
39
40// 获取当前时间戳 - seconds
41pub fn get_cur_second() -> i64 { Local::now().timestamp() }
42
43// 获取当前时间戳 - milli
44pub fn get_cur_milli() -> i64 { Local::now().timestamp_millis() }