C#
[C#] DateTime nullable 에서의 ToString("yyyy-MM-dd") ?(System.InvalidOperationException)
HyoSeong
2020. 8. 10. 17:36
반응형
결론부터 알려드리겠습니다.
DateTime? dateTime = null;
if(dateTime != null)
{
Console.WriteLine(dateTime.Value.ToString("yyyy"));
}
또는
DateTime? dateTime = null;
Console.WriteLine(dateTime?.ToString("yyyy"));
을 사용하면 됩니다.
기본적으로 DateTime 형식에는 null이 지원되지 않습니다.
이때 타입 뒤에 "?" 를 붙임으로써 nullable형식으로 만들 수 있는데 이때 DateTime의 ToString함수가 overloading을 제공하지 않습니다.
이때 Nullable의 Value라는 속성을 이용하면 됩니다.
하지만 Value가 null일 경우 System.InvalidOperationException가 발생하니 사전에 null인지 체크를 해주어야 합니다.
DateTime? dateTime = null;
if(dateTime != null)
{
Console.WriteLine(dateTime.Value.ToString("yyyy"));
}
C# 6.0 이상에서는 Null conditional operator를 사용하여 다음과 같이 구현할 수 있습니다.
해당 연산자를 사용하면 값이 null이 아닐 때 실행됩니다.
DateTime? dateTime = null;
Console.WriteLine(dateTime?.ToString("yyyy")); // null 반환된다.
dateTime = new DateTime(2020, 8, 10);
Console.WriteLine(dateTime?.ToString("yyyy"));
// 출력결과
// 2020
감사합니다.
반응형