C# 10부터 도입된 DateOnly와 TimeOnly 타입은 날짜와 시간 정보를 분리하여 다룰 때 매우 유용합니다. 기존 DateTime 타입을 사용할 때 불필요한 시간 또는 날짜 정보를 함께 처리해야 했던 문제를 해결해 줍니다.
1. DateOnly란?
DateOnly는 시간 정보 없이 연, 월, 일만 표현하는 타입입니다. 예를 들어 예약 날짜, 생일 등 시간 정보가 필요 없는 경우에 사용됩니다.
// 오늘 날짜 가져오기
DateOnly today = DateOnly.FromDateTime(DateTime.Now);
// 특정 날짜 생성
DateOnly birthday = new DateOnly(1990, 5, 23);
// 날짜 비교
if (today > birthday)
{
Console.WriteLine("오늘이 생일 이후입니다.");
}
2. TimeOnly란?
TimeOnly는 날짜 정보 없이 시, 분, 초 등 시간 정보만 다루는 타입입니다. 알람, 근무시간 등 날짜와 무관한 시간 표현에 적합합니다.
// 현재 시간 가져오기
TimeOnly now = TimeOnly.FromDateTime(DateTime.Now);
// 특정 시간 생성
TimeOnly alarm = new TimeOnly(7, 30); // 오전 7시 30분
// 시간 비교
if (now > alarm)
{
Console.WriteLine("알람 시간이 지났습니다.");
}
3. DateOnly와 TimeOnly 조합하기
날짜와 시간 정보를 따로 관리하다가 필요할 때 DateTime으로 결합할 수도 있습니다.
DateOnly date = new DateOnly(2024, 6, 1);
TimeOnly time = new TimeOnly(14, 45);
DateTime combined = date.ToDateTime(time);
Console.WriteLine(combined); // 2024-06-01 14:45:00 출력
이처럼 DateOnly와 TimeOnly 타입은 코드 가독성을 높이고 날짜와 시간을 명확히 구분하여 처리할 때 효과적입니다. 프로젝트에서 날짜 및 시간 관리에 혼란이 있었다면 적극적으로 활용해 보세요.
'C#' 카테고리의 다른 글
| C# 동적 어셈블리 생성과 실행 (0) | 2026.06.02 |
|---|---|
| C# Dictionary의 커스텀 키 해싱 전략 구현 (0) | 2026.06.02 |
| C# IDisposable을 통한 비관리 리소스 해제 사례 (1) | 2026.06.01 |
| C# 암호화 해시(Checksum) 생성과 비교 (0) | 2026.06.01 |
| C# 종속성 주입(DI) 패턴과 IServiceProvider 활용 (0) | 2026.05.30 |