2010-05-10 3 views
1

У меня есть строка 12012009, введенная пользователем в приложении ASP.NET MVC. Я хотел преобразовать это в DateTime.String to datetime

Но если я делаю DateTime.TryParse("12012009", out outDateTime);, он возвращает false.

Так что я попытался преобразовать 12012009 в 12/01/2009, а затем сделать DateTime.TryParse("12/01/2009", out outDateTime);, который будет работать

Но я не нахожу прямо вперед метод для преобразования строки в строку 12012009 «12/01/2009 ». Есть идеи?

+0

Одинаковые цифры всегда имеют префикс нуля? Например, всегда может быть 05 или это может быть просто 5? Если всегда заполняется 0, его довольно просто, если нет, то это практически невозможно. – Serapth

+0

Дата всегда будет дополняться 0 – SARAVAN

ответ

4

Вы можете использовать DateTime.TryParseExact и передать в точный формат строки:

DateTime dateValue = DateTime.Now; 
if (DateTime.TryParseExact("12012009", "ddMMyyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out dateValue))) 
{ 
    // Date now in dateValue 
} 
+1

'mm' - спецификатор формата для * минуты *. http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx – dtb

+0

@dtb - Спасибо за улов! – Oded

9

Во-первых, вы должны решить, если ваш вход в день-месяц-год или месяц-день-год формат.

Затем вы можете использовать DateTime.TryParseExact и явно указать формат входной строки:

DateTime.TryParseExact("12012009", 
         "ddMMyyyy", 
         CultureInfo.InvariantCulture, 
         DateTimeStyles.None, 
         out convertedDate) 

Смотрите также: Custom Date and Time Format Strings

+0

+1 избили меня до этого .... :-) –

+0

Это ответ, но это зависит от того, сколько цифр/дней в день указано с префиксом 0. Если 1212009 - это возможный вход, вы попадаете. – Serapth

+0

Спасибо. Вход определенно будет в формате mmddyyyy. Поэтому я думаю, что я в безопасности. – SARAVAN

0

Если вы хотите использовать этот формат, скорее всего, нужно указать формат к парсеру. Проверьте документацию System.IFormatProvider, а также документацию System.DateTime для методов, которые принимают IFormatProvider.

0
DateTime yourDate = 
    DateTime.ParseExact(yourString, "ddMMyyyy", Culture.InvariantCulture);