2010-11-21 4 views
6

Привет У меня есть необычный формат даты, который я хотел бы разобрать в объект DateTimeКак разобрать необычную строку даты

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

Я хотел бы использовать DateTime.Tryparse(), но я не могу показаться, чтобы начать работу над этим ,

Спасибо за любую помощь.

+0

Является ли дата всегда одинаковым количеством символов, я имею в виду, месяц и день являются allwa ys 2 цифры в длину? – SubniC

ответ

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!"); 
} 

Edit: обернутой лексема разделителя времени в одинарных кавычках, как на комментарий Фредерика

+3

остерегайтесь символа ':' в строках формата даты/времени: это [токен разделителя времени] (http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx), и это может вас удивить, например. путем разрешения символа '.' в итальянских локалях. Возможно, вы захотите обернуть его в одинарные кавычки, чтобы избежать его и избежать неприятностей позже :) –

5

Вы можете использовать статический метод DateTime.TryParseExact() с 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); 
Смежные вопросы