2012-03-06 4 views
0

Я работаю с лог-файл, который дает мне строку даты, которая выглядит примерно так:Преобразование Необычное DateTime строки в DateTime объекта

09/Feb/2012:00:38:48 

Я смотрел на разных страницах в Интернете о преобразовании даты такие как MSDN site, но ни один из них не показывает дату, подобную этой.

2012-02-09T00:38:48.0000000 

Или есть способ, чтобы это на самом деле конвертирована:

мне нужно вручную переформатировать строку выглядеть так ли?

ответ

6

Вы можете использовать DateTime.TryParseExact для синтаксического анализа строки в DateTime из любого указанного вами формата. В нижней части этого MSDN ref есть нагрузка.

+0

@ MordecaiX7: Вы хотите MMM - см мой пример. –

+0

Используйте MMM, который представляет сокращенное название месяца в соответствии с вашим случаем. Ознакомьтесь с полным описанием вариантов форматирования здесь: http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx – AdaTheDev

+0

А я не понял, что могу рассказать парсору, в каком формате находится дата. Благодарю. – MordecaiX7

3

Как указано AdaTheDev, DateTime.TryParseExact - это путь вперед. Согласно странице MSDN на "custom date and time format strings" вы хотите, чтобы MMM обозначала название сокращенного месяца.

using System; 
using System.Globalization; 

class Test 
{ 
    static void Main() 
    { 
     string text = "09/Feb/2012:00:38:48"; 
     DateTime value; 
     if (DateTime.TryParseExact(text, "dd/MMM/yyyy:HH:mm:ss", 
            CultureInfo.InvariantCulture, 
            DateTimeStyles.None, 
            out value)) 
     { 
      Console.WriteLine("Success! {0}", value); 
     } 
     else 
     { 
      Console.WriteLine("Failed"); 
     } 
    } 
} 

Обратите внимание на использование CultureInfo.InvariantCulture - это не выглядит, как вы должны использовать текущую культуру, например.

(Конечно, вы можете использовать вместо Noda Time;)

Смежные вопросы