1use chrono::{Local, NaiveDate, NaiveDateTime, NaiveTime, Datelike};
2
3pub 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
19pub fn get_week_index() -> u32 {
21 Local::now().iso_week().week()
22}
23
24pub fn get_cur_datetime() -> String {
26 Local::now().format("%Y-%m-%d %H:%M:%S").to_string()
27}
28
29pub 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
40pub fn get_cur_second() -> i64 { Local::now().timestamp() }
42
43pub fn get_cur_milli() -> i64 { Local::now().timestamp_millis() }