2014-12-29 4 views
0

Тип данных мне нужно DataTime? Струнные выборочные значения Я, как 11/28/2014 1:40:42 AM Какой формат следует использовать, чтобы преобразовать их в DateTime? я нашел метод DateTime.ParseExact, но до сих пор не уверен, что вводить в качестве формата на основе формы вход, который у меня есть.Преобразование строк в DateTime?

+0

Для использования синтаксического анализа точного, см MSDN для форматирования советов: http://msdn.microsoft.com/en-us/library/8kb3ddd4%28v=vs.110%29.aspx – VoteCoffee

+0

HTTP: // msdn.microsoft.com/en-us/library/w2sa9yss%28v=vs.110%29.aspx – VoteCoffee

+0

http://msdn.microsoft.com/en-us/library/az4se3k1%28v=vs.110%29. aspx – VoteCoffee

ответ

1

Вы можете использовать инвариантную культуру, чтобы разобрать этот формат:

DateTime? result = DateTime.Parse("11/28/2014 1:40:42 AM", CultureInfo.InvariantCulture); 

тип переменной result будет DateTime? (который так же, как Nullable<DateTime>). Пожалуйста, убедитесь, что вам действительно нужен нулевой тип здесь, потому что результат DateTime.Parse всегда будет значением DateTime и никогда null.

Если вы хотите, чтобы поймать случаи, когда синтаксические не удается, вы можете пойти на это:

DateTime result; 
if (!DateTime.TryParse("11/28/2014 1:40:42 AM", 
         CultureInfo.InvariantCulture, 
         DateTimeStyles.None, 
         out result)) 
{ 
    // Handle error 
} 
+2

По какой причине вы объявили как «var», а затем бросили? Почему бы просто не объявить «DateTime?»? – learningcs

+1

«var» означает, что компилятор должен использовать любой тип правой стороны задания. Я отправил в Nullable (DateTime?), Потому что OP попросил его. См. Обновленный ответ. – Frank

+0

Спасибо, есть ли способ поймать плохие форматы для большей безопасности? например, нужно ли проверять, является ли результат равным нулю или мне нужно его обернуть в try-catch? и yep, схема Nullable DateTime – Bohn

-1

DateTime.Parse(string) См, который использует поставщик формат по умолчанию. Как правило, вы хотите пойти по умолчанию, потому что культурные конвертеры меняют форматирование (и они меняют DateTime LOT).

+0

OP просит разобрать определенный формат: 28.11.2014 1:40:42 – Frank

0

Вы можете использовать следующий код.

try 
{ 
    DateTime Value = DateTime.Parse("11/28/2014 1:40:42 AM", CultureInfo.InvariantCulture); 
} 
catch(Exception e) 
{ 
    //throw exception 
} 
Смежные вопросы