не может преобразовать ноль в System.DateTime, потому что это тип значения, который не может быть обнулен "error
Тип DateTime
является типом значения , что означает, что он не может содержать нулевое значение. Чтобы обойти это, вы можете сделать одну из двух вещей; либо верните DateTime.MinValue
, и проверьте это, когда вы хотите использовать значение, либо измените функцию, чтобы она возвращала DateTime?
(обратите внимание на знак вопроса), который может иметь значение DateTime
. Обнуляемую дату можно использовать так:
DateTime? nullable = DateTime.Now;
if (nullable.HasValue)
{
// do something with nullable.Value
}
не может неявно преобразовать system.timepsan в system.datetime
Когда вы вычитаете DateTime
из другого DateTime
, результатом будет TimeSpan
, представляющий количество времени между ними. TimeSpan
представляет не конкретный момент времени, а сам интервал. Чтобы получить дату, вы можете использовать метод Add
или перегрузку метода Subtract
объекта DateTime
, который принимает TimeSpan
. Я не могу сказать, как именно это должно выглядеть, поскольку не знаю, что представляют разные даты в вашем коде.
В последнем случае вы можете просто использовать возвращаемое значение из метода AddDays, но с отрицательным значением (чтобы вычесть один день вместо того, чтобы добавить один):
return dateEffDateOne.AddDays(-1);