DateTime를 변환하는 방법? DateTime까지


171

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

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

나는 다음을 시도했다.

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

답변:


304

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

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

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

1
다음은 발표자에서 Nullable Date / Time으로 뷰를 채우는 데 사용한 스 니펫입니다. memDateLogin = m.memDateLogin ?? DateTime.MinValue
Ravi Ram

'날짜 시간?' 복용량은 'UpdatedDate'에 대한 정의를 포함하지 않습니다
Vasil Valchev

88

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

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

43

이 시도

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

여기서 중요한 것은 null-coalescing 연산자입니다. 더 자세한 정보는 chills42의 답변을 참조하십시오.
cspolton

24

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

DateTime dtValue = (DateTime) dtNullAbleSource;

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


6
+1 이전에 var이 null인지 확인하면 완벽합니다
Leandro

22

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;

6

다음은 어떻습니까 :

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

6

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

memDateLogin = m.memDateLogin ?? DateTime.MinValue


1

허용 된 답변보다 훨씬 나은 다음을 사용하는 것이 좋습니다.

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

할 말 하는 이유는 그것의 더 나은?
n4rzul 2018

0

이 시도:

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

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

4
귀하의 제안 / 응답을 설명하는 것은 일반적으로 좋은 형태로 간주됩니다. 코드 만 답은 기술적으로 정확하더라도 놀라 울 정도로 유익하지 않을 수 있습니다.
막시밀리안 Ast

1
@MaximilianAyes 네, 그렇습니다 당신이 제안한 방식으로 구현하려고합니다 :)
Harsh Vyas
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.