[C#] DateTime를 변환하는 방법? DateTime까지

nullable DateTime ( DateTime?) 을로 변환하고 DateTime싶지만 오류가 발생합니다.

‘System.DateTime’형식을 암시 적으로 변환 할 수 없습니까? ‘System.DateTime’으로 명시적인 전환이 존재합니다 (캐스트가 누락 되었습니까?)

나는 다음을 시도했다.

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



답변

정확하게이 목적을 위해 설계된 null-coalescing 연산자 를 사용하려고합니다 .

그것을 사용하면이 코드로 끝납니다.

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


답변

MS는 이미 이에 대한 방법을 만들었으므로 null 병합 연산자를 사용할 필요가 없습니다. 기능상의 차이는 없지만 전문가가 아닌 사람이 한 눈에 일어나기 쉬운 작업을 쉽게 수행 할 수 있습니다.

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


답변

이 시도

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


답변

간단한 캐스트를 사용할 수 있습니다.

DateTime dtValue = (DateTime) dtNullAbleSource;

Leandro Tupone이 말했듯이 var가 null인지 확인해야합니다.


답변

nullable 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;


답변

다음은 발표자에서 Nullable Date / Time으로 뷰를 채우는 데 사용한 스 니펫입니다.

memDateLogin = m.memDateLogin ?? DateTime.MinValue