[C#] DateTime 변수에 값이 지정되어 있는지 확인

C # 내에서 DateTime 인스턴스에 값이 할당되었는지 확인하는 쉬운 방법이 있습니까?



답변

C #에 값이 할당되지 않은 변수를 갖는 유일한 방법은 변수가 로컬 변수가되는 것입니다.이 경우 컴파일 타임에 변수를 읽으려고 시도하여 변수가 지정되지 않았다는 것을 알 수 있습니다. )

나는 당신이 정말로 원한다고 생각합니다 Nullable<DateTime>(또는 DateTime?C # 구문 설탕으로)-그것을 null시작한 다음 정상적인 DateTime값 을 지정하십시오 (적절하게 변환 될 것입니다). 그런 다음 “실제”값이 설정되어 있는지 확인 null하기 위해 HasValue속성을 사용하거나 비교할 수 있습니다 .


답변

당신은 그렇게 의미합니까?

DateTime datetime = new DateTime();

if (datetime == DateTime.MinValue)
{
    //unassigned
}

또는 Nullable을 사용할 수 있습니다

DateTime? datetime = null;

 if (!datetime.HasValue)
 {
     //unassigned
 }


답변

이것을 어딘가에 넣으십시오 :

public static class DateTimeUtil //or whatever name
{
    public static bool IsEmpty(this DateTime dateTime)
    {
        return dateTime == default(DateTime);
    }
}

그때:

DateTime datetime = ...;

if (datetime.IsEmpty())
{
    //unassigned
}


답변

DateTime은 값 형식이므로 절대 null 일 수 없습니다. DateTime을 생각하십니까? (Nullable)을 사용할 수 있습니다 :

DateTime? something = GetDateTime();
bool isNull = (something == null);
bool isNull2 = !something.HasValue;


답변

할당되지 않은 날짜 시간에 대한 GetHashCode ()가 항상 0이라는 것을 알았습니다. 이 동작이 표시되는 이유에 대한 문서를 찾을 수 없기 때문에 이것이 null 날짜 시간을 확인하는 좋은 방법인지 확실하지 않습니다.

if(dt.GetHashCode()==0)
{
    Console.WriteLine("DateTime is unassigned");
} 


답변

Nullable<DateTime>가능하면 사용하십시오 .


답변

기본값은 항상 new DateTime()입니다. 그래서 우리는 쓸 수 있습니다

DateTime datetime;

if (datetime == new DateTime())
{
    //unassigned
}