use chrono::{Local, NaiveDate, NaiveDateTime, NaiveTime, Datelike};
pub fn parse_ymd(date_str: &str) -> NaiveDateTime {
let naive_date = NaiveDate::parse_from_str(date_str, "%Y-%m-%d").expect("Failed to parse date");
let time = NaiveTime::from_hms_opt(0, 0, 0);
NaiveDateTime::new(naive_date, time.unwrap())
}
pub fn parse_ymd_hms(datetime_str: &str) -> NaiveDateTime {
match NaiveDateTime::parse_from_str(datetime_str, "%Y-%m-%d %H:%M:%S") {
Ok(naive_datetime) => { naive_datetime },
Err(err) => {
log::error!("datetime.parse error {:?} {:?}", datetime_str, err);
Local::now().naive_local()
}
}
}
pub fn get_week_index() -> u32 {
Local::now().iso_week().week()
}
pub fn get_cur_datetime() -> String {
Local::now().format("%Y-%m-%d %H:%M:%S").to_string()
}
pub fn get_cur_date_str() -> String {
Local::now().format("%Y-%m-%d").to_string()
}
pub fn get_cur_datetime_str() -> String {
Local::now().format("%Y-%m-%d %H:%M:%S").to_string()
}
pub fn get_cur_local_datetime() -> NaiveDateTime { Local::now().naive_local() }
pub fn format_datetime_ymd(datetime: NaiveDateTime) -> String { datetime.format("%Y-%m-%d").to_string() }
pub fn format_datetime_ymd_hms(datetime: NaiveDateTime) -> String { datetime.format("%Y-%m-%d %H:%M:%S").to_string() }
pub fn get_cur_second() -> i64 { Local::now().timestamp() }
pub fn get_cur_milli() -> i64 { Local::now().timestamp_millis() }