Как конвертировать DateTime? to DateTime - программирование

Как конвертировать DateTime? to DateTime

Я хочу преобразовать nullable DateTime (DateTime?) в DateTime, но я получаю сообщение об ошибке:

"Cannot implicitly convert type 'System.DateTime?' to 'System.DateTime'. An explicit conversion exists (are you missing a cast?)"

Я попытался сделать следующее:

DateTime UpdatedTime = (DateTime)_objHotelPackageOrder.UpdatedDate == null 
    ? DateTime.Now : _objHotelPackageOrder.UpdatedDate;
4b9b3361

Ответ 1

Вы хотите использовать оператор с нулевой связностью, который предназначен именно для этой цели.

Используя его, вы получите этот код.

DateTime UpdatedTime = _objHotelPackageOrder.UpdatedDate ?? DateTime.Now;

Ответ 2

MS уже сделала для этого метод, поэтому вам не нужно использовать оператор нулевой коалесценции. Нет никакой разницы в функциональности, но для неспециалистов легче получить то, что происходит с первого взгляда.

DateTime updatedTime = _objHotelPackageOrder.UpdatedDate.GetValueOrDefault(DateTime.Now);

Ответ 3

Попробуйте это

DateTime UpdatedTime = _objHotelPackageOrder.UpdatedDate ?? DateTime.Now;

Ответ 4

Вам нужно вызвать свойство Value нулевого значения DateTime. Это вернет DateTime.

Предполагая, что UpdatedDate DateTime?, тогда это должно работать:

DateTime UpdatedTime = (DateTime)_objHotelPackageOrder.UpdatedDate == null ? DateTime.Now : _objHotelPackageOrder.UpdatedDate.Value;

Чтобы сделать код немного легче читать, вы можете использовать свойство HasValue вместо проверки null:

DateTime UpdatedTime = _objHotelPackageOrder.UpdatedDate.HasValue
                          ? _objHotelPackageOrder.UpdatedDate.Value
                          : DateTime.Now;

Это можно сделать еще более кратким:

DateTime UpdatedTime = _objHotelPackageOrder.UpdatedDate ?? DateTime.Now;

Ответ 5

Как насчет следующего:

DateTime UpdatedTime = _objHotelPackageOrder.UpdatedDate.HasValue ? _objHotelPackageOrder.UpdatedDate.value : DateTime.Now;

Ответ 6

Вот фрагмент, который я использовал в Presenter, заполняющем представление с помощью Nullable Date/Time

memDateLogin = m.memDateLogin ?? DateTime.MinValue

Ответ 7

Вы можете использовать простой состав:

DateTime dtValue = (DateTime) dtNullAbleSource;

Ответ 8

Вы также можете попробовать Свойства Nullable (T):

DateTime UpdatedTime = _objHotelPackageOrder.UpdatedDate.HasValue 
    ? DateTime.Now : _objHotelPackageOrder.UpdatedDate.Value;

Ответ 9

скорее, пользователь, следующий за ним гораздо лучше

DateTime UpdatedTime = _objHotelPackageOrder.UpdatedDate == null 
    ? DateTime.Now : (DateTime)_objHotelPackageOrder.UpdatedDate;

Ответ 10

Попробуйте следующее:

DateTime UpdatedTime = (DateTime)_objHotelPackageOrder.UpdatedDate == null ? DateTime.Now : _objHotelPackageOrder.UpdatedDate.Value;

Ответ 11

DateTime UpdatedTime = _objHotelPackageOrder.HasValue ? _objHotelPackageOrder.UpdatedDate.Value : DateTime.Now;