2010-12-21 2 views
9

Я пытаюсь преобразовать из строки в DataTime, но произошла ошибка. Я использую VS 2003, .NET Framework 1.1Невозможно неявно преобразовать тип 'string' в 'System.DateTime'

DateTime dt = Convert.ToDateTime("11/23/2010"); 
string s2 = dt.ToString("dd-MM-yyyy"); 
DateTime dtnew = Convert.ToString(s2); 

Не удается неявно преобразовать тип 'строка' в 'System.DateTime'

Может ли один помочь мне меня с синтаксисом, как разрешите ошибку.

+1

Строго рекомендую вам t o переключитесь хотя бы на «.NET 2.0». Вам понадобится VS 2005+. Но вы можете использовать бесплатный VS 2010, который в любом случае лучше, чем VS 2003! – abatishchev

ответ

12
string input = "21-12-2010"; // dd-MM-yyyy  
DateTime d; 
if (DateTime.TryParseExact(input, "dd-MM-yyyy", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out d)) 
{ 
    // use d 
} 
+0

+1 для 'DateTime.TryParse' –

5

Я думаю, что вы сделали опечатку - сменить Convert.ToString(s2) на Convert.ToDateTime(s2).

+0

Я получаю исключение Необработанное исключение типа «System.FormatException» произошло в mscorlib.dll Дополнительная информация: String не была признана действительной DateTime. – happysmile

+0

при изменении смены на Convert.ToString (s2) на Convert.ToDateTime (s2) – happysmile

+0

Лучше попробуйте использовать DateTime.Parse(). Это позволит устранить некоторые ошибки. Кажется, что Convert() плачет 23.11.2010, где он думает, что 23 месяца. – Pradeep

2

Попробуйте DateTime.Parse(...) или DateTime.ParseExact(...), если вам нужно указать формат.

4

Вы должны использовать DateTime.Parse, или DateTime.ParseExact.

DateTime dt= DateTime.Parse("11/23/2010"); 
string s2=dt.ToString("dd-MM-yyyy"); 
DateTime dtnew = DateTime.Parse(s2); 

Оба имеют TryXXX варианты, которые требуют, проходящих в выводимый параметр, но не сгенерирует исключение, если разбор не удаётся:

DateTime dt; 
if(td = DateTime.TryParse("11/23/2010", out td)) 
{ 
    string s2=dt.ToString("dd-MM-yyyy"); 
    DateTime dtnew = DateTime.Parse(s2); 
} 
+1

+1 согласовано там –

+0

1. 'dt = new DataTime'; 2. 'dt = DateTime.Parse'; всего: избыточное создание – abatishchev

+0

@abatishchev - совершенно верно. – Oded

1

DateTime.Parse("01/01 2010"); или использовать DateTime.TryParse , если вы не уверены, он преобразуется каждый раз, т. е. не всегда дата, но иногда пустая.

+0

+1 согласен с этим –

3
DateTime dtnew = Convert.ToString(s2); 

проблема заключается в том, что ваш преобразования string s2 в строку снова и хранить его в DateTime variable

Попробуйте это:

DateTime dt = Convert.ToDateTime("11/23/2010"); 
string s2 = dt.ToString("dd-MM-yyyy"); 
DateTime dtnew = Convert.ToDateTime(s2); 
-1

Вы должны изменить двойные кавычки ("") в одинарные кавычки ('')

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