C#에서 DateOnly 및 TimeOnly 작업: 날짜와 시간을 효과적으로 다루는 방법

많은 프로그램에서 날짜와 시간을 다루는 기술은 매우 중요했습니다. C#에서는 지금까지 DateTime 구조체를 사용하여 날짜 및 시간을 관리해야 했습니다. 그러나 C# 10.0에는 DateOnly 및 TimeOnly라는 두 가지 새로운 중요한 추가 기능이 도입되었습니다. 이러한 형식은 각각 날짜 전용 값과 시간 전용 값을 사용하는 보다 세련되고 정확한 방법을 제공합니다. 이 블로그 게시물에서는 C# 애플리케이션에서 DateOnly 및 TimeOnly를 사용하는 방법을 살펴보겠습니다.

1. DateOnly란 무엇인가요?

C# 10.0부터는 DateOnly라는 새로운 구조체가 소개되었습니다. 이 구조체는 시간 정보를 포함하지 않고 날짜 정보만을 저장합니다. DateOnly를 사용하면 날짜 데이터를 더 간결하게 표현할 수 있으며, 시간 부분에 신경 쓰지 않고 작업할 수 있습니다.

DateOnly 구조체 (System) | Microsoft Learn

2. DateOnly 사용하기

DateOnly를 사용하면 다음과 같이 날짜를 생성할 수 있습니다.

public static void DateOnlyExample()
{
    // <SnippetDateOnly>
    DateOnly dateOnly = new DateOnly(2023, 9, 7);
    Console.WriteLine($"DateOnly Sample :  {dateOnly}");
    // </SnippetDateOnly>
}

또한 DateOnly를 이용하여 날짜 간의 비교도 쉽게 수행할 수 있습니다.

DateOnly date1 = new DateOnly(2023, 9, 7);
DateOnly date2 = new DateOnly(2023, 9, 8);

if (date1 < date2)
{
    Console.WriteLine("date1은 date2보다 이전 날짜입니다.");
}

또 다른 샘플에서는 기존 DateTime 형식에서 DateOnly 인스턴스를 만드는걸 보여줍니다

public static void DateOnlyFromDateTimeExample()
{
    // <SnippetDateOnlyFromDateTime>

    var dateOnly = DateOnly.FromDateTime(DateTime.Now);
    Console.WriteLine($"DateOnly From DateTime :  {dateOnly}");
    // </SnippetDateOnlyFromDateTime>
}

DateOnly의 이점

  • 깨끗하고 맑음: DateOnly를 사용하는 경우 코드는 날짜 전용 데이터로 작업하고 있음을 명시적으로 전달합니다. 이렇게 하면 코드 가독성이 향상되고 특히 시간 관련 정보가 필요하지 않은 경우 혼동을 방지할 수 있습니다.
  • 불변: DateOnly 인스턴스는 변경할 수 없으므로 일단 생성되면 값을 수정할 수 없습니다. 이러한 불변성은 데이터 무결성을 보장하고 우발적인 변경을 방지합니다.
  • 시간대 번거로움 없음: DateOnly를 사용하면 표준 시간대 또는 일광 절약 시간 조정을 처리할 필요가 없습니다. 날짜 구성 요소에만 초점을 맞추어 코드를 보다 간단하게 만듭니다.

3. TimeOnly란 무엇인가요?

TimeOnly는 DateOnly와 비슷하지만, 날짜 정보 대신 시간 정보만을 저장하는 구조체입니다. 시간 관련 작업을 수행할 때 유용합니다.

TimeOnly 구조체 (System) | Microsoft Learn

4. TimeOnly 사용하기

TimeOnly를 사용하여 현재 시간을 얻을 수 있습니다.

public static void TimeOnlyExample()
{
    // <SnippetTimeOnly>
    TimeOnly timeOnly = new TimeOnly(12, 30, 45);
    Console.WriteLine($"TimeOnly Sample :  {timeOnly}");
    // </SnippetTimeOnly>
}

또 다른 샘플에서는 기존 DateTime 형식에서 TimeOnly 인스턴스를 만듭니다.

public static void TimeOnlyFromDateTimeExample()
{
    // <SnippetTimeOnlyFromDateTime>

    var timeOnly = TimeOnly.FromDateTime(DateTime.Now);
    Console.WriteLine($"TimeOnly From DateTime :  {timeOnly}");
    // </SnippetTimeOnlyFromDateTime>
}

TimeOnly 구조체를 이용하여 시간 간의 연산도 간단하게 수행할 수 있습니다.

TimeOnly startTime = new TimeOnly(10, 0);
TimeOnly endTime = new TimeOnly(15, 30);

TimeOnly duration = endTime - startTime;

Console.WriteLine("소요 시간: " + duration);

TimeOnly의 이점

  • 정밀: 시간 전용 데이터로 작업할 때 TimeOnly는 높은 수준의 정밀도를 제공하므로 시간 간격과 기간을 정확하게 캡처할 수 있습니다.
  • 불변: DateOnly와 마찬가지로 TimeOnly 인스턴스는 변경할 수 없으므로 코드 전체에서 시간 관련 값이 일관되게 유지됩니다.
  • 향상된 코드 가독성: TimeOnly를 사용하면 하루 중 시간 데이터를 처리하고 있음을 명확하게 전달하여 코드 가독성을 높이고 오류 위험을 줄일 수 있습니다.

5. DateOnly와 TimeOnly 조합하기

DateOnly와 TimeOnly를 조합하여 날짜와 시간을 모두 다룰 수 있습니다. 예를 들어, 특정 날짜와 시간을 나타내는 DateTime을 다음과 같이 만들 수 있습니다.

DateOnly date = new DateOnly(2023, 9, 7);
TimeOnly time = new TimeOnly(14, 30);

DateTime dateTime = date.ToDateTime(time);

6. 결론

C#에서는 DateOnly와 TimeOnly 구조체를 사용하여 날짜와 시간을 효과적으로 다룰 수 있습니다. 이러한 구조체는 날짜 또는 시간 정보만 필요한 경우에 매우 유용하며, 코드를 더 간결하게 작성할 수 있게 도와줍니다.

더 나아가, 이러한 구조체를 조합하여 복잡한 시간 관련 작업을 더욱 효율적으로 수행할 수 있습니다. C#의 DateOnly와 TimeOnly를 활용하여 프로그래밍 작업을 더욱 효율적으로 수행하세요.

자주 묻는 질문 (FAQs)

1. DateOnly와 DateTime의 차이는 무엇인가요?

DateOnly는 날짜 정보만을 저장하는 반면, DateTime은 날짜와 시간 정보를 모두 저장합니다.

2. TimeOnly를 사용하여 어떻게 시간을 형식화할 수 있나요?

TimeOnly를 사용하여 시간을 형식화하려면 ToString() 메서드를 사용하면 됩니다.

3. DateOnly와 TimeOnly는 언제 사용해야 하나요?

DateOnly와 TimeOnly는 날짜 또는 시간 정보만 필요한 경우에 사용해야 합니다. 예를 들어, 예약 시스템에서는 DateOnly를 사용하여 날짜를 관리하고, TimeOnly를 사용하여 시간을 관리할 수 있습니다.

4. DateOnly와 TimeOnly는 어떻게 파싱하나요?

DateOnly와 TimeOnly는 각각 Parse() 메서드를 사용하여 문자열로부터 파싱할 수 있습니다.

5. C# 10.0 이상에서만 DateOnly와 TimeOnly를 사용할 수 있나요?

네, C# 10.0 이상에서만 DateOnly와 TimeOnly를 사용할 수 있습니다.

이제 C#에서 DateOnly와 TimeOnly를 사용하는 방법에 대한 기본적인 이해를 갖게 되었습니다. 이러한 구조체를 적재적소에 활용하여 더 효율적인 프로그래밍을 해보세요.

Leave a Comment