complete redesign
This commit is contained in:
34
server/src/shared/date_utils.rs
Normal file
34
server/src/shared/date_utils.rs
Normal file
@@ -0,0 +1,34 @@
|
||||
// src/shared/date_utils.rs
|
||||
use chrono::NaiveDate;
|
||||
|
||||
/// Attempts to parse the date string with multiple commonly used formats in Slovakia
|
||||
pub fn parse_date_with_multiple_formats(date_str: &str) -> Option<NaiveDate> {
|
||||
// Define common date formats used in Slovakia
|
||||
let formats = [
|
||||
"%d:%m:%Y", // Original format: 01:01:2023
|
||||
"%d.%m.%Y", // Standard Slovak format: 01.01.2023
|
||||
"%d-%m-%Y", // Dash format: 01-01-2023
|
||||
"%d/%m/%Y", // Slash format: 01/01/2023
|
||||
"%Y-%m-%d", // ISO format: 2023-01-01
|
||||
"%Y/%m/%d", // Alternative ISO: 2023/01/01
|
||||
"%Y.%m.%d", // Dot ISO: 2023.01.01
|
||||
"%d.%m.%y", // Short year with dot: 01.01.23
|
||||
"%d-%m-%y", // Short year with dash: 01-01-23
|
||||
"%d/%m/%y", // Short year with slash: 01/01/23
|
||||
];
|
||||
|
||||
// Try each format until one works
|
||||
for format in formats {
|
||||
if let Ok(date) = NaiveDate::parse_from_str(date_str, format) {
|
||||
return Some(date);
|
||||
}
|
||||
}
|
||||
|
||||
// If none of the formats worked, try to handle potential whitespace issues
|
||||
let trimmed = date_str.trim();
|
||||
if trimmed != date_str {
|
||||
return parse_date_with_multiple_formats(trimmed);
|
||||
}
|
||||
|
||||
None
|
||||
}
|
||||
Reference in New Issue
Block a user