如何转换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;