2012-07-01 10 views
5

Se ho tesi generali sql date valide in C# stringhe:Converti formato orario SQL generale in C# (tutte le varianti)?

(ogni data può essere in ordine diverso all'interno) esempio :

01 feb 2010 
feb 01 2010 
2010 01 feb 
... 
... 

voglio convertire una data stringa DateTime (C#). (Voglio la capacità di convertire tutti i formati dall'elenco precedente)

mentre parse exact richiede le combinazioni 3!, c'è qualche soluzione migliore?

+1

3! è solo 6 ... Tuttavia, puoi semplicemente dividere lo spazio, e capire se ogni pezzo è alfa, 4 cifre o 2 cifre ... Btw - come si riferisce a SQL? –

+0

sì, lo so, questo è quello che ive ha voluto fare ... ma ancora una volta prima di continuare, solo controllando se altre soluzioni –

+0

4 cifre per anno, 3 caratteri per mesi, 2 cifre per giorno. È possibile utilizzare un'espressione regolare con gruppi corrispondenti e eseguire una singola analisi esatta. –

risposta

2

penso ho ottenuto ... enter image description here

string[] str = new[] { "01 feb 2010","feb 01 2010","2010 01 feb","2010 feb 01","feb 2010 01" }; 
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-US"); 
CultureInfo culture = CultureInfo.CreateSpecificCulture("en-US");      
for (int i = 0; i < str.Length; i++) 
{ 
    DateTime t = DateTime.Parse(str[i], culture); 
    t.Dump(); 
} 
+1

Non è necessario impostare (inquinare) il 'CurrentThread.CurrentCulture'. 'Parse (..., culture)' dovrebbe essere sufficiente. –

+0

@HenkHolterman sì ... anche se quando lo visualizzo cambia l'ordine (il mio computer è in dd/MM/yyyy) quindi mi mostra: 01/02/2010 .... ma solo per la visualizzazione (che è irrilevante) –

+0

Cosa fa 'Dump()'? – abatishchev

Problemi correlati