2013-09-11 6 views
0

Я хочу разобрать следующий формат даты и времени:Анализировать дата время с PM/AM

8/1/2013 3:52:05 PM 

Что я должен использовать для формата?

DateTime.ParseExact("8/1/2013 3:52:05 PM", "format", CultureInfo.InvariantCulture); 
+0

[MSDN] (http://msdn.microsoft.com/en-us/library/w2sa9yss.aspx) обеспечивает четкие примеры того, как использовать ParseExact, в том числе 'format' параметр. – bland

+0

Обязательная ссылка: http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx. в частности «tt» для индикатора AM/PM. –

ответ

7

Custom Date and Time Format Strings

"tt" - АМ/РМ целеуказатель.

Так что ваша строка формата должна быть: M/d/yyyy h:mm:ss tt

Console.WriteLine(DateTime.ParseExact("8/1/2013 3:52:05 PM", "M/d/yyyy h:mm:ss tt", CultureInfo.InvariantCulture)); 

печатает 2013-08-01 15:52:05

Но, вы легко можете сделать то же самое без указания формата:

DateTime.Parse("8/1/2013 3:52:05 PM", CultureInfo.GetCultureInfo("en-us")) 

Works просто хорошо. Ваш ввод форматируется с использованием формата en-US.

+0

Осторожно, ваше примечание AM/PM, зависит от вашей версии .NET. Из [MSDN] (http://msdn.microsoft.com/en-us/library/w2sa9yss.aspx): В .NET Framework 4 метод ParseExact генерирует исключение FormatException, если строка, подлежащая анализу, содержит компонент часа и обозначение AM/PM, которое не согласуется. В .NET Framework 3.5 и более ранних версиях обозначение AM/PM игнорируется. – bland

2
DateTime date = DateTime.ParseExact("8/1/2013 3:52:05 PM", "d/M/yyyy h:mm:ss tt", CultureInfo.InvariantCulture); 
Console.WriteLine(date); 

Выход будет;

1/8/2013 3:52:05 PM 

Здесь DEMO.

Дополнительная литература;

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