use chrono::NaiveDateTime;
pub fn datetime_conversion(input: &mut String) -> Result<NaiveDateTime, String> {
let fmt_dt = input
.replace("/", "-")
.replace(".", "-")
.trim()
.to_ascii_uppercase();
if let Ok(date_time) = NaiveDateTime::parse_from_str(&fmt_dt, "%m-%d-%Y %I:%M:%S %p") {
return Ok(date_time);
}
if let Ok(date_time) = NaiveDateTime::parse_from_str(&fmt_dt, "%d-%m-%Y %I:%M:%S %p") {
return Ok(date_time);
}
if let Ok(date_time) = NaiveDateTime::parse_from_str(&fmt_dt, "%Y-%m-%d %I:%M:%S %p") {
return Ok(date_time);
}
if let Ok(date_time) = NaiveDateTime::parse_from_str(&fmt_dt, "%Y-%d-%m %I:%M:%S %p") {
return Ok(date_time);
}
if let Ok(date_time) = NaiveDateTime::parse_from_str(&fmt_dt, "%m-%d-%Y %H:%M:%S") {
return Ok(date_time);
}
if let Ok(date_time) = NaiveDateTime::parse_from_str(&fmt_dt, "%d-%m-%Y %H:%M:%S") {
return Ok(date_time);
}
if let Ok(date_time) = NaiveDateTime::parse_from_str(&fmt_dt, "%Y-%m-%d %H:%M:%S") {
return Ok(date_time);
}
if let Ok(date_time) = NaiveDateTime::parse_from_str(&fmt_dt, "%m-%d-%Y %I:%M %p") {
return Ok(date_time);
}
if let Ok(date_time) = NaiveDateTime::parse_from_str(&fmt_dt, "%d-%m-%Y %I:%M %p") {
return Ok(date_time);
}
if let Ok(date_time) = NaiveDateTime::parse_from_str(&fmt_dt, "%Y-%m-%d %I:%M %p") {
return Ok(date_time);
}
if let Ok(date_time) = NaiveDateTime::parse_from_str(&fmt_dt, "%Y-%d-%m %I:%M %p") {
return Ok(date_time);
}
if let Ok(date_time) = NaiveDateTime::parse_from_str(&fmt_dt, "%m-%d-%Y %H:%M") {
return Ok(date_time);
}
if let Ok(date_time) = NaiveDateTime::parse_from_str(&fmt_dt, "%d-%m-%Y %H:%M") {
return Ok(date_time);
}
if let Ok(date_time) = NaiveDateTime::parse_from_str(&fmt_dt, "%Y-%m-%d %H:%M") {
return Ok(date_time);
}
if let Ok(date_time) = NaiveDateTime::parse_from_str(&fmt_dt, "%Y-%d-%m %H:%M") {
return Ok(date_time);
}
if let Ok(date_time) = NaiveDateTime::parse_from_str(&fmt_dt, "%m-%d-%Y %I:%M %p") {
return Ok(date_time);
}
if let Ok(date_time) = NaiveDateTime::parse_from_str(&fmt_dt, "%d-%m-%Y %I:%M %p") {
return Ok(date_time);
}
if let Ok(date_time) = NaiveDateTime::parse_from_str(&fmt_dt, "%Y-%m-%d %I:%M %p") {
return Ok(date_time);
}
if let Ok(date_time) = NaiveDateTime::parse_from_str(&fmt_dt, "%Y-%d-%m %I:%M %p") {
return Ok(date_time);
}
if let Ok(date_time) = NaiveDateTime::parse_from_str(&fmt_dt, "%m-%d-%y %I:%M:%S %p") {
return Ok(date_time);
}
if let Ok(date_time) = NaiveDateTime::parse_from_str(&fmt_dt, "%d-%m-%y %I:%M:%S %p") {
return Ok(date_time);
}
if let Ok(date_time) = NaiveDateTime::parse_from_str(&fmt_dt, "%y-%m-%d %I:%M:%S %p") {
return Ok(date_time);
}
if let Ok(date_time) = NaiveDateTime::parse_from_str(&fmt_dt, "%y-%d-%m %I:%M:%S %p") {
return Ok(date_time);
}
if let Ok(date_time) = NaiveDateTime::parse_from_str(&fmt_dt, "%m-%d-%y %H:%M:%S") {
return Ok(date_time);
}
if let Ok(date_time) = NaiveDateTime::parse_from_str(&fmt_dt, "%d-%m-%y %H:%M:%S") {
return Ok(date_time);
}
if let Ok(date_time) = NaiveDateTime::parse_from_str(&fmt_dt, "%y-%m-%d %H:%M:%S") {
return Ok(date_time);
}
if let Ok(date_time) = NaiveDateTime::parse_from_str(&fmt_dt, "%m-%d-%y %I:%M %p") {
return Ok(date_time);
}
if let Ok(date_time) = NaiveDateTime::parse_from_str(&fmt_dt, "%d-%m-%y %I:%M %p") {
return Ok(date_time);
}
if let Ok(date_time) = NaiveDateTime::parse_from_str(&fmt_dt, "%y-%m-%d %I:%M %p") {
return Ok(date_time);
}
if let Ok(date_time) = NaiveDateTime::parse_from_str(&fmt_dt, "%y-%d-%m %I:%M %p") {
return Ok(date_time);
}
return Err(input.clone());
}