Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# TimeSpan.FromDays() 메서드 완벽 가이드: 사용법과 예제 코드

C#의 TimeSpan.FromDays() 메서드는 지정된 일 수를 나타내는 TimeSpan 객체를 반환하는 정적 메서드입니다. 이때 일 수는 밀리초 단위까지 정확하게 지정할 수 있어, 소수점 이하의 정밀한 시간 간격 표현이 필요할 때 유용하게 활용됩니다.

문법(Syntax)

TimeSpan.FromDays() 메서드의 기본 문법은 다음과 같습니다.

public static TimeSpan FromDays(double val);

매개변수 val은 일(day) 단위의 값을 의미하며, double 형식으로 밀리초 단위의 정밀도까지 지정 가능합니다. 음수 값도 입력할 수 있어 과거 시점이나 역방향 시간 간격도 표현할 수 있습니다.

예제 1: FromDays() 기본 사용법

다음 예제는 TimeSpan.FromDays() 메서드를 활용하는 방법을 보여줍니다.

using System;
public class Demo {
    public static void Main(){
        TimeSpan span1 = new TimeSpan(5, 25, 0);
        TimeSpan span2 = new TimeSpan(1, 10, 0);
        TimeSpan span3 = TimeSpan.FromDays(43.999999);
        Console.WriteLine("TimeSpan1 = "+span1);
        Console.WriteLine("TimeSpan2 = "+span2);
        Console.WriteLine("TimeSpan3 = "+span3);
        Console.WriteLine("Result (Comparison of span1 and span2) = "+TimeSpan.Compare(span1, span2));
    }
}

실행 결과

위 코드를 실행하면 다음과 같은 출력 결과를 얻을 수 있습니다.

TimeSpan1 = 05:25:00
TimeSpan2 = 01:10:00
TimeSpan3 = 43.23:59:59.9140000
Result (Comparison of span1 and span2) = 1

출력 결과에서 확인할 수 있듯이, FromDays(43.999999)는 약 44일에 근접한 값으로 변환되며 밀리초 단위(.9140000)까지 정확하게 반영됩니다. 또한 TimeSpan.Compare(span1, span2)의 결과가 1인 것은 span1이 span2보다 크다는 의미입니다.

예제 2: 음수 값과 소수점 값 처리

이번에는 음수 시간과 아주 작은 소수점 값을 다루는 예제를 살펴보겠습니다.

using System;
public class Demo {
    public static void Main(){
        TimeSpan span1 = new TimeSpan(-3, 15, 0);
        TimeSpan span2 = new TimeSpan(-2, 05, 10);
        TimeSpan span3 = TimeSpan.FromDays(0.000323456);
        Console.WriteLine("TimeSpan1 = "+span1);
        Console.WriteLine("TimeSpan2 = "+span2);
        Console.WriteLine("TimeSpan3 = "+span3);
        Console.WriteLine("Result (Comparison of span1 and span2) = "+TimeSpan.Compare(span1, span2));
        Console.WriteLine("Result (Comparison of span2 and span3) = "+TimeSpan.Compare(span2, span3));
    }
}

실행 결과

실행 결과는 다음과 같습니다.

TimeSpan1 = -02:45:00
TimeSpan2 = -01:54:50
TimeSpan3 = 00:00:27.9470000
Result (Comparison of span1 and span2) = -1
Result (Comparison of span2 and span3) = -1

흥미로운 점은 TimeSpan 생성자에 음수 값을 전달하면 내부적으로 정규화되어 -02:45:00처럼 표시된다는 것입니다. 또한 FromDays(0.000323456)처럼 매우 작은 일 단위 값도 초 단위(약 27.947초)로 정확히 변환되는 것을 확인할 수 있습니다.

정리

TimeSpan.FromDays() 메서드는 일 단위의 숫자 값을 TimeSpan 객체로 손쉽게 변환해 주는 편리한 도구입니다. 주요 특징을 요약하면 다음과 같습니다.

  • double 형식의 일 단위 값을 받아 밀리초 정밀도까지 정확하게 변환합니다.
  • 양수와 음수 값을 모두 지원합니다.
  • TimeSpan.Compare() 등 다른 TimeSpan 메서드와 함께 활용하여 시간 비교 로직을 구현할 수 있습니다.

날짜 계산, 만료 기간 설정, 스케줄링 등 다양한 시간 관련 로직에서 유용하게 사용할 수 있으니 참고하시기 바랍니다.