2010-11-21 8 views
6

Hola Tengo un formato de fecha inusual que me gustaría analizar en un objeto DateTime¿Cómo analizo una cadena de fecha inusual

string date ="20101121"; // 2010-11-21 
string time ="13:11:41: //HH:mm:ss 

me gustaría utilizar DateTime.Tryparse() pero me parece que no puede empezar a trabajar en este .

Gracias por cualquier ayuda.

+0

Es la fecha siempre teniendo el mismo número de caracteres, quiero decir, el mes y el día son allwa ys 2 dígitos de largo? – SubniC

Respuesta

9
string date ="20101121"; // 2010-11-21 
string time ="13:11:41"; //HH:mm:ss 

DateTime value; 

if (DateTime.TryParseExact(
    date + time, 
    "yyyyMMddHH':'mm':'ss", 
    new CultureInfo("en-US"), 
    System.Globalization.DateTimeStyles.None, 
    out value)) 
{ 
    Console.Write(value.ToString()); 
} 
else 
{ 
    Console.Write("Date parse failed!"); 
} 

Editar: envuelto el símbolo separador de hora entre comillas simples de acuerdo con el comentario de Frédéric

+3

tenga cuidado con el carácter ':' en las cadenas de formato de fecha/hora: es el [token separador de tiempo] (http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx) y puede sorprenderlo, por ejemplo. resolviendo el carácter '.' en las configuraciones regionales italianas. Es posible que desee envolverlo entre comillas simples para escapar y evitar problemas más adelante :) –

3

DateTime.TryParseExact()

5

Puede utilizar el método estático DateTime.TryParseExact() con un custom format:

using System.Globalization; 

string date = "20101121"; // 2010-11-21 
string time = "13:11:41"; // HH:mm:ss 

DateTime convertedDateTime; 
bool conversionSucceeded = DateTime.TryParseExact(date + time, 
    "yyyyMMddHH':'mm':'ss", CultureInfo.InvariantCulture, 
    DateTimeStyles.None, out convertedDateTime); 
Cuestiones relacionadas