2012-07-01 15 views
5

Si tengo tesis generales sql fechas válidos en C# cadenas:Convierte el formato general de hora de SQL en C# (todas las variaciones)?

(cada fecha puede estar en orden diferente en el interior), por ejemplo, :

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

Quiero convertir una cadena a la fecha DateTime (C#). (Quiero la capacidad de convertir todos los formatos de la lista anterior)

mientras que el análisis exacto me exige 3! combinaciones, ¿hay alguna solución mejor?

+1

3! es solo 6 ... Sin embargo, podrías simplemente dividir el espacio, y averiguar si cada fragmento es alfas, 4 dígitos o 2 dígitos ... Por cierto, ¿cómo se relaciona esto con SQL? –

+0

sí lo sé, eso es lo que he empezado a hacer ... pero antes de continuar, simplemente comprobando si hay otra solución –

+0

4 dígitos por año, 3 caracteres por meses, 2 dígitos por día. Puede usar una expresión regular con grupos coincidentes y hacer un análisis único exacto. –

Respuesta

2

Creo que lo tengo ... 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

No es necesario configurar (contaminar) el 'CurrentThread.CurrentCulture'. 'Parse (... cultura)' debería ser suficiente. –

+0

@HenkHolterman Sí ... aunque cuando lo visualizo SI cambia el orden (mi computadora está en dd/MM/aaaa) entonces me muestra: 01/02/2010 .... pero solo para mostrar (lo cual es irrelevante) –

+0

¿Qué hace 'Dump()' hacer? – abatishchev

Cuestiones relacionadas