Ciao Mario, buon ferragosto anche a te!
Oiram ha scritto:
ho impostato nel Web.config in modo che il formatto data venisse riconosciuto in tutto il mondo.
Indica l'esatta configurazione che hai inserito nel web.config a tal proposito.
Potresti impostare il nodo globalization in questo modo:
<globalization culture="auto" uiCulture="auto" />
Così che la
Culture, ovvero il set di impostazioni che riguardano la lingua e la formattazione dei dati, riflettano quelli preferiti dall'utente.
Questo significa che se l'utente ha un browser in inglese (statunitense), il browser stesso comunicherà questa preferenza al server nella forma di un'intestazione Accept-Language che viene inclusa in ogni richiesta web.
ASP.NET raccoglierà quel valore e imposterà la Culture di conseguenza, grazie all'impostazione del web.config che vedevamo prima.
Questo significa che se uno statunitese usa la tua applicazione, la funzione DateTime.Parse() lavorerà con la rispettiva Culture, e il formato della data verrà interpretato come mm/gg/aaaa.
Con gli utenti italiani, invece, DateTime.Parse() interpreterà le date come gg/mm/aaaa perché per loro è stata impostata la Culture italiana.
In sintesi: ciascun utente potrà inserire le date nel formato che gli è convenzionale senza che tu debba prevedere ogni singolo caso.
Quindi, dato che DateTime.Parse ha questa versatilità, dovresti usarlo per interpretare l'input dell'utente prima di usare la data in una query SQL.
Supponendo che tu sia usando ASP.NET WebForms e una apposita TextBox per la data:
var data = DateTime.Parse(dataInizio.Text);
//ora uso la data come valore di un parametro di un SqlCommand
command.Parameters.AddWithValue("@dataInizio", data);
//eseguo il comando nel database
command.ExecuteNonQuery();
Con questo codice non devi più preoccuparti di sapere in che formato ti arrivano le date. Ci pensa dapprima DateTime.Parse, quando è il momento di interpretare l'input dell'utente. E poi ci pensa il SqlParameter quando invece si tratta di riconvertire quella data in una stringa che abbia significato per il motore database.
ciao,
Moreno