Не преобразовывайте его в строку, используя ToShortDateTimeString, просто установите результат Convert.ToDateTime
:
myObject.ScoringLastUpgrade = Convert.ToDateTime(txtScoringUpgradeDate.Text);
Предполагая, что вы провели достаточную проверку txtScoringUpgradeDate.Text
?
При работе с этими преобразованиями типов я предпочитаю использовать метод TryParse
, например:
DateTime date;
if (DateTime.TryParse(txtScoringUpgradeDate.Text, out date))
myObject.ScoringLastUpgrade = date;
Convert.ToDateTime
, так же как и явный DateTime.Parse
, выдаст InvalidCastException
, когда исключительныйзначение происходит.Лучше сделать ваш код неисправным, чем толерантным, а затем поймать исключение.
ОБНОВЛЕНИЕ : на основе вашего последнего комментария:
Вы не должны возвращать DateTime.MinValue
в этомрегистр, так как MinValue
меньше поддерживаемого минимального значения столбца datetime
.CLR DateTime
поддерживает диапазон дат вплоть до 0000-01-01, тогда как SQL datetime
(а также сравнительный тип CLR SqlDateTime
) поддерживает минимальное значение 1753-01-01.Так как он может иметь значение DateTime
со значением NULL, вам следует установить значение NULL:
public static DateTime? ToNullableDateTime(this string date)
{
DateTime dateTime;
return (DateTime.TryParse(date, out dateTime))
? (DateTime?)dateTime
: null;
}