Ошибка даты и времени только в производстве - PullRequest
0 голосов
/ 19 марта 2011

У меня есть два текстовых поля на моей странице asp.net, которые берут даты из календаря:

При выборе Календаря я присваиваю значение выбранной переменной скрытой переменной.ниже приведен код:

DateTime dtOne;
            dtOne = Convert.ToDateTime(hdnOne.Value.Trim().ToString());
            DateTime dtTwo = Convert.ToDateTime(hdnTwo.Value.Trim().ToString());

При сохранении точки останова я получаю это значение для dtOne

9/2/2011 02:03 ...

Это нормально работает на предварительно развернутом сайте, но когда я копирую и вставляю тот же самый развернутый код в производственный процесс, я получаю сообщение об ошибке ниже:

System.FormatException: String was not recognized as a valid DateTime.

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

Ответы [ 4 ]

4 голосов
/ 19 марта 2011

Настройки культуры на вашем сервере, скорее всего, отличаются от настроек вашей машины для разработки.В этом случае я бы подумал, что виновником является DateSeperator.

Вы сравнили значение hdnOne.Value.Trim (). ToString () для обоих компонентов?

3 голосов
/ 19 марта 2011

Да - это проблема региональных настроек. По сути, строка формата, которую вы используете в Convert.ToDateTime, не может проанализировать дату и время, возвращаемые производственным сервером. Поэтому либо измените региональные настройки вашего производственного сервера, либо, если это неприятно (и это может быть), используйте соответствующий параметр IFormatProvider в параметрах метода, чтобы объяснить, в каком формате даты и времени на самом деле находится возвращаемая строка, чтобы она могла ее проанализировать.

Информация здесь: http://msdn.microsoft.com/en-us/library/system.convert.todatetime.aspx

0 голосов
/ 19 марта 2011

если текстовое поле находится в режиме только для чтения, вы получите пустое значение, когда получите значение из текстового поля. также используйте datetime.tryparse вместо convert

0 голосов
/ 19 марта 2011

Есть ли какая-либо разница между вашей производственной и тестовой средой, особенно в отношении культуры / локали? - возможно, попробуйте явно сопоставить Культуру, используемую как элементом управления календарем javascript, так и парсером вашего кода.

Это исключение выдается со всем контентом? Или просто какой-то пользовательский контент? Если вы используете TextBox, то это могут быть просто некоторые пользователи (или пользователи в некоторых регионах), вводящие неожиданный контент.

Независимо от этого текущего исправления, вам нужно будет ожидать эту ошибку во время выполнения, как только реальные пользователи получат ваши веб-страницы - так что либо обрабатывайте исключение FormatException, либо используйте TryParse

...