2010-02-24 7 views
4

У меня есть строка, как это:Преобразование строки в DateTime

"20090212" 

, и я хочу, чтобы преобразовать в действительный C# DateTime.

Нужно ли это разбирать, потому что это слишком много работает?

+0

быстрый палец первый ... Это удивительно полезный вопрос (я должен искать мой собственный код ответа, когда я делаю это), но там будет быть горсткой ответов в течение первой минуты ... – Unsliced

+1

Точный дубликат: http://stackoverflow.com/questions/2188585/convert-string-to-date-in-c/2188593#2188593 –

+0

@Dynami Он никогда не появлялся в результатах поиска. –

ответ

13

Вы можете использовать DateTime.ParseExact:

DateTime result = 
    DateTime.ParseExact("20090212", "yyyyMMdd", CultureInfo.InvariantCulture); 
+0

Спасибо за ответ! Он работал гладко :) –

+0

хороший совет, наверняка пригодится когда-нибудь – mattythomas2000

4

Посмотрите на метод DateTime.TryParseExact (MSDN). Я предпочитаю метод TryParseExact для метода ParseExact, потому что он возвращает логическое значение, указывающее, было ли преобразование успешным, вместо того, чтобы выбрасывать исключение, но любой из них будет работать.

2
DateTime.ParseExact(str, "yyyyMMdd", CultureInfo.CurrentCulture); 

... и я очень сомневаюсь, что у меня есть первый.

Хотя для полноты картины, я предпочитаю TryParseExact

DateTime dt; 
if(DateTime.TryParseExact(str, "yyyyMMdd", CultureInfo.CurrentCulture, DateTimeStyles.None, out dt)) { 
    // ... use the variable dt 
} 
+0

В общем, безопаснее использовать 'CultureInfo.InvariantCulture', когда вы знаете, что все входные строки будут в определенном формате. Иногда коды формата интерпретируются по-разному в разных локалях. – Brian

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