Как установить DateTime в null
Использование С#. У меня есть строка dateTimeEnd
.
Если строка находится в правильном формате, я хочу сгенерировать DateTime
и назначить ее eventCustom.DateTimeEnd типа
public Nullable<System.DateTime> DateTimeEnd { get; set; }
Если dateTimeEnd
пусто или пусто, мне нужно eventCustom.DateTimeEnd
установить значение null.
Я пытаюсь достичь этого, используя следующий код, но всегда получаю null для eventCustom.DateTimeEnd
.
Не могли бы вы помочь мне определить, что не так в моем коде?
DateTime? dateTimeEndResult;
if (!string.IsNullOrWhiteSpace(dateTimeEnd))
dateTimeEndResult = DateTime.Parse(dateTimeEnd);
eventCustom.DateTimeEnd = dateTimeEndResult = true ? (DateTime?)null : dateTimeEndResult;
Ответы
Ответ 1
Похоже, вы просто хотите:
eventCustom.DateTimeEnd = string.IsNullOrWhiteSpace(dateTimeEnd)
? (DateTime?) null
: DateTime.Parse(dateTimeEnd);
Обратите внимание, что это вызовет исключение, если dateTimeEnd
не является допустимой датой.
Альтернативой может быть:
DateTime validValue;
eventCustom.DateTimeEnd = DateTime.TryParse(dateTimeEnd, out validValue)
? validValue
: (DateTime?) null;
Теперь будет установлен результат null
, если dateTimeEnd
недействителен. Обратите внимание, что TryParse
обрабатывает null
как вход без проблем.
Ответ 2
DateTime
- тип значения, не подлежащего обнулению.
DateTime? newdate = null;
Вы можете использовать Nullable<DateTime>
С# Nullable Datetime
Ответ 3
Это должно работать:
if (!string.IsNullOrWhiteSpace(dateTimeEnd))
eventCustom.DateTimeEnd = DateTime.Parse(dateTimeEnd);
else
eventCustom.DateTimeEnd = null;
Обратите внимание, что это вызовет исключение, если строка не в правильном формате.
Ответ 4
Вы можете написать
DateTime? newdate = null;
Ответ 5
Эта строка:
eventCustom.DateTimeEnd = dateTimeEndResult = true ? (DateTime?)null : dateTimeEndResult;
совпадает с:
eventCustom.DateTimeEnd = dateTimeEndResult = (true ? (DateTime?)null : dateTimeEndResult);
поскольку условный оператор ?
имеет более высокий приоритет, чем оператор присваивания =
. Вот почему вы всегда получаете значение null для eventCustom.DateTimeEnd
. (MSDN Ref)
Ответ 6
Теперь я не могу использовать DateTime?
, я использую DBNull.Value
для всех типов данных. Он отлично работает.
eventCustom.DateTimeEnd = string.IsNullOrWhiteSpace(dateTimeEnd)
? DBNull.Value
: DateTime.Parse(dateTimeEnd);