DateTime.ParseExact указывает, что String не была признана допустимым DateTime.
Я пытаюсь проанализировать строку даты в переменной DateTime
. Я узнал, что ParseExact
- это способ сделать это, но я попробую это получить ошибку:
Строка не была признана допустимым DateTime.
string timeFormat = "dd-MM-yyyy hh:mm:ss";
DateTime startDate = DateTime.ParseExact(reader["startdate"].ToString(), timeFormat, CultureInfo.InvariantCulture);
DateTime nextDate = DateTime.ParseExact(reader["nextdate"].ToString(), timeFormat, null);
Я пробовал как с null
(который работает на другой странице), так и с CultureInfo.InvariantCulture
.
reader["startdate"].ToString()
вывод: 08-08-2012 15:39:09
и
reader["nextdate"].ToString()
вывод: 08-08-2012 15:39:09
Я думаю, что он должен работать, но это не так.
У кого-то есть идея, что не так?:)
Ответы
Ответ 1
Вы используете hh
в своей строке формата. Это 12-часовой "час дня". Значение 15 не находится в диапазоне...
Вместо этого вы хотите hh
, который является 24-часовым спецификатором.
Подробнее см. текстовую документацию формата даты и времени MSDN.
Ответ 2
Скорее всего, из-за различий между локали вашего сервера и локали пользовательского интерфейса
Еще один простой способ - указать детали глобализации в web.config
как
<configuration>
<system.web>
<globalization culture="en-GB"/>
</system.web>
</configuration>
ИЛИ более подробно
<globalization requestEncoding="utf-8" responseEncoding="utf-8" culture="en-GB" uiCulture="en-GB" />
Но будьте уверены, что это не столкнутся с вашим приложением вообще
Ответ 3
попробуйте это, он работает
DateTime.ParseExact("01-08-2012 15:36:25", "dd-MM-yyyy HH:mm:ss", null);
Ответ 4
Я не уверен, что это помогает, но я использовал точный код из этой статьи, и он работал у меня, потому что DateTime.ParseExact(dat, "dd/MM/yyy HH: MM", CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None) не работал у меня.
Прочтите это, я просто разместил его в Интернете:
http://rochcass.wordpress.com/2012/08/27/error-string-was-not-recognized-as-a-valid-datetime-solution/#more-350