45 lines
1.4 KiB
Python
45 lines
1.4 KiB
Python
from datetime import datetime
|
|
|
|
|
|
def normalizza_data(data_string: str) -> str:
|
|
"""
|
|
Normalizza una stringa di data al formato YYYY-MM-DD, provando diversi formati di input.
|
|
|
|
Args:
|
|
data_string (str): La stringa di data da normalizzare.
|
|
|
|
Returns:
|
|
str: La data normalizzata nel formato YYYY-MM-DD,
|
|
o None se la stringa non può essere interpretata come una data.
|
|
"""
|
|
formato_desiderato = "%Y-%m-%d"
|
|
formati_input = [
|
|
"%Y/%m/%d",
|
|
"%Y-%m-%d",
|
|
"%d-%m-%Y",
|
|
"%d/%m/%Y",
|
|
] # Ordine importante: prova prima il più probabile
|
|
|
|
for formato_input in formati_input:
|
|
try:
|
|
data_oggetto = datetime.strptime(data_string, formato_input)
|
|
return data_oggetto.strftime(formato_desiderato)
|
|
except ValueError:
|
|
continue # Prova il formato successivo se quello attuale fallisce
|
|
|
|
return None # Se nessun formato ha avuto successo
|
|
|
|
|
|
def normalizza_orario(orario_str):
|
|
try:
|
|
# Prova prima con HH:MM:SS
|
|
dt = datetime.strptime(orario_str, "%H:%M:%S")
|
|
return dt.strftime("%H:%M:%S")
|
|
except ValueError:
|
|
try:
|
|
# Se fallisce, prova con HH:MM
|
|
dt = datetime.strptime(orario_str, "%H:%M")
|
|
return dt.strftime("%H:%M:%S")
|
|
except ValueError:
|
|
return orario_str # Restituisce originale se non parsabile
|