2013-03-19 6 views
5

Я разрабатываю приложение для Windows.ошибка преобразования даты

В том, что у меня есть дату в формате строки как >>fileDate="15/03/2013"

Я хочу, чтобы это было получить преобразованы в формат даты в моем поле базы данных является datetime.

Я использовал следующие вещи для него >>

DateTime dt = DateTime.ParseExact(fileDate, "yyyyy-DD-MM", CultureInfo.InvariantCulture); 

DateTime dt = DateTime.Parse(fileDate); 

Оба эти метода оказались отказ дает мне ошибку >>

String was not recognized as a valid DateTime. 

Что может быть ошибка?

Есть ли другой способ сделать это?

+0

Попробуйте удалить HH: ss из приведенного выше кода. – Prashant

+0

nope все еще ошибка - тот же – 2013-03-19 06:37:41

+1

nope ..после того, как все ответы работают [Как они заявляют одно и то же) – 2013-03-19 06:41:58

ответ

4

Вы должны указать формат даты в соответствии со строкой даты, которую вы должны указать ParseExact. Вы можете видеть больше на Custom DateTime format - MSDN

Изменить

"yyyy-MM-dd HH:ss" 

Для

"dd/MM/yyyy" 

Ваш код будет

DateTime dt = DateTime.ParseExact(fileDate, "dd/MM/yyyy", CultureInfo.InvariantCulture); 
+1

разделитель даты is '/' not '-'! –

+0

Спасибо Это сработало. конечно, '/' – 2013-03-19 06:42:28

+0

Спасибо @HarshBaid ... – Adil

0

Это потому, что строка «15/03/2013» не может быть проанализирована как DateTime со строкой формата «yyyy-MM-dd HH: ss».

+0

Я ссылался на это http://stackoverflow.com/questions/919244/converting-string-to-datetime-c-net, почему я положил это – 2013-03-19 06:36:08

6
string fileDate = "15/03/2013"; 
DateTime dt = DateTime.ParseExact(fileDate, "dd/mm/yyyy", CultureInfo.InvariantCulture); 
+0

работал. Спасибо. – 2013-03-19 06:43:30

+0

Есть одна проблема >> my fileDate имеет значение «15/03/2013», а dt [после преобразования] дает мне значение как> 1/15/2013 12:03:00 AM. Что может быть проблемой? – 2013-03-19 06:50:37

+3

Изменение dd/mm/yyyy на dd/MM/yyyy. мм (в нижнем регистре) - строка формата в течение нескольких минут, а не месяцев. – HuorSwords

2

Вы должны сделать это:

DateTime dt = DateTime.ParseExact(fileDate, "dd/MM/yyyy",CultureInfo.InvariantCulture); 

Вы должны передать строку для формата ("dd/MM/yyyy") в том же стиле, который вы передаете в строке fileDate.

1

В вашем текущем кодексе вы используете формат "yyyyy-DD-MM", который является неправильным, поскольку для даты требуется нижний регистр d не верхний регистр D. , Также в течение года вы указываете 5 y s, это должно быть 4, например yyyy, заказ в соответствии с вашей строкой даты должен быть: "dd/MM/yyyy". Чтобы быть в безопасности, вы можете даже использовать "d/M/yyyy", который будет работать для цифр или цифр в день или месяц.

Так что ваш код должен быть:

string fileDate="15/03/2013"; 
DateTime dt = DateTime.ParseExact(fileDate, "dd/MM/yyyy", CultureInfo.InvariantCulture); 

Вы можете видеть больше на Custom DateTime format - MSDN

+0

Есть одна проблема >> my fileDate имеет значение «15/03/2013», а dt [после преобразования] дает мне значение как> 1/15/2013 12:03:00 AM. Что может быть проблемой? – 2013-03-19 06:53:33

+0

@PakkPuneriPorag, это кажется довольно странным, вы уверены, что ваш fileDate имеет указанную выше строку, также убедитесь, что вы не выполняете 'DateTime.Parse', как в вопросе. – Habib

+0

Нет, эта проблема также решена. – 2013-03-19 06:58:47

2

у может попробовать с этим SimpleDateFormat DateFormat = новый SimpleDateFormat ("ММ/дд/гггг"); Дата convertDate = dateFormat.parse ("ur_dateString")

+0

Да, это сработало, но есть одна проблема >> my fileDate имеет значение «15/03/2013» и dt [после преобразования] заставляя меня ценить как> 1/15/2013 12:03:00. Что может быть проблемой? – 2013-03-19 06:51:22

+0

Заказ в исходном вопросе: '' dd/MM/yyyy '', а не '' MM/dd/yyyy''. И тип SimpleDateFormat для Java, я думаю, не C#. –

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