如何转换DateTime? 到DateTime
我想将一个可为空的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;
您想要使用专为此目的而devise的空合并运算符 。
使用它你结束了这个代码。
DateTime UpdatedTime = _objHotelPackageOrder.UpdatedDate ?? DateTime.Now;
MS已经为此做了一个方法,所以你不必使用null合并运算符。 在function上没有区别,但非专家更容易一目了然。
DateTime updatedTime = _objHotelPackageOrder.UpdatedDate.GetValueOrDefault(DateTime.Now);
尝试这个
DateTime UpdatedTime = _objHotelPackageOrder.UpdatedDate ?? DateTime.Now;
您需要调用可空的DateTime的Value属性。 这将返回一个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;
以下情况如何:
DateTime UpdatedTime = _objHotelPackageOrder.UpdatedDate.HasValue ? _objHotelPackageOrder.UpdatedDate.value : DateTime.Now;
你可以使用一个简单的演员:
DateTime dtValue = (DateTime) dtNullAbleSource;
这是我用Presenter填充视图的可空date/时间的片段
memDateLogin = m.memDateLogin ?? DateTime.MinValue
您也可以尝试可空(T)属性 :
DateTime UpdatedTime = _objHotelPackageOrder.UpdatedDate.HasValue ? DateTime.Now : _objHotelPackageOrder.UpdatedDate.Value;
相反用户以下更好
DateTime UpdatedTime = _objHotelPackageOrder.UpdatedDate == null ? DateTime.Now : (DateTime)_objHotelPackageOrder.UpdatedDate;
尝试这个:
DateTime UpdatedTime = (DateTime)_objHotelPackageOrder.UpdatedDate == null ? DateTime.Now : _objHotelPackageOrder.UpdatedDate.Value;
DateTime UpdatedTime = _objHotelPackageOrder.HasValue ? _objHotelPackageOrder.UpdatedDate.Value : DateTime.Now;