일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- Process
- File
- programmers
- WPF
- log
- nullable
- csharp
- git
- Github
- logging
- C#
- chashtag
- dotNET
- convert
- commit
- windows10
- Binding
- IValueConverter
- .net
- 코딩테스트
- Coding
- algorithm
- Visual Studio
- mysql
- tls
- string
- Microsoft
- windows
- coding-test
- ListView
Archives
- Today
- Total
CHashtag
[C#] DateTime nullable 에서의 ToString("yyyy-MM-dd") ?(System.InvalidOperationException) 본문
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
감사합니다.
반응형
'C#' 카테고리의 다른 글
[C#] 파일 읽기, 저장하기 (UTF8) (0) | 2021.01.26 |
---|---|
[C#] 현재 메소드 이름 얻기 ( MethodBase.GetCurrentMethod() ) (0) | 2021.01.11 |
[ZOOM] [C#] [SDK] 2. C# Wrapper SDK 다운로드 & 프로젝트에 적용 (0) | 2020.11.21 |
[C#] Collection for 값 변경시 System.InvalidOperationException 해결법 (0) | 2020.10.26 |
[ZOOM] [C#] [SDK] 1. ZOOM SDK, JWT APP 생성하기 (3) | 2020.07.28 |