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

C# TimeSpan.FromTicks() 메서드 – 틱 단위로 TimeSpan 생성하기

C#의 TimeSpan.FromTicks() 메서드는 지정된 틱(tick) 수에 해당하는 시간 간격을 나타내는 TimeSpan 객체를 반환합니다. .NET에서 1틱은 100나노초에 해당하므로, 1밀리초는 10,000틱, 1초는 10,000,000틱입니다. 아주 정밀한 시간 측정이 필요할 때 유용하게 활용할 수 있습니다.

구문

public static TimeSpan FromTicks(long val);

매개변수 val은 시간을 나타내는 틱 수를 의미하며 long 형식입니다. 음수 값을 전달하면 음의 시간 간격도 표현할 수 있으며, 이 메서드는 정적(static) 메서드이기 때문에 TimeSpan 인스턴스 없이 클래스 이름으로 직접 호출할 수 있습니다.

예제 1: 다양한 단위의 TimeSpan 생성 및 비교

다음 예제에서는 FromTicks()를 포함해 new TimeSpan(), FromHours(), FromMilliseconds(), FromMinutes() 등 여러 방법으로 TimeSpan 객체를 생성하고, TimeSpan.Compare() 메서드로 서로 비교합니다. Compare() 메서드는 첫 번째 인수가 두 번째 인수보다 크면 1, 작으면 -1, 같으면 0을 반환합니다.

using System;
public class Demo {
    public static void Main() {
        TimeSpan span1 = TimeSpan.FromTicks(18768768);
        TimeSpan span2 = new TimeSpan(-9, 45, 50);
        TimeSpan span3 = TimeSpan.FromHours(5);
        TimeSpan span4 = TimeSpan.FromMilliseconds(10000);
        TimeSpan span5 = TimeSpan.FromMinutes(2);
        TimeSpan span6 = TimeSpan.FromMinutes(20);
        Console.WriteLine("TimeSpan1 = "+span1);
        Console.WriteLine("TimeSpan2 = "+span2);
        Console.WriteLine("TimeSpan3 = "+span3);
        Console.WriteLine("TimeSpan4 = "+span4);
        Console.WriteLine("TimeSpan5 = "+span5);
        Console.WriteLine("Result (Comparison of span1 and span2) = "+TimeSpan.Compare(span1, span2));
        Console.WriteLine("Result (Comparison of span2 and span3) = "+TimeSpan.Compare(span2, span3));
        Console.WriteLine("Result (Comparison of span1 and span3) = "+TimeSpan.Compare(span1, span3));
        Console.WriteLine("Result (Comparison of span3 and span4) = "+TimeSpan.Compare(span3, span4));
        Console.WriteLine("Result (Comparison of span4 and span5) = "+TimeSpan.Compare(span4, span5));
    }
}

실행 결과

TimeSpan1 = 00:00:01.8768768
TimeSpan2 = -08:14:10
TimeSpan3 = 05:00:00
TimeSpan4 = 00:00:10
TimeSpan5 = 00:02:00
Result (Comparison of span1 and span2) = 1
Result (Comparison of span2 and span3) = -1
Result (Comparison of span1 and span3) = -1
Result (Comparison of span3 and span4) = 1
Result (Comparison of span4 and span5) = -1

예제 2: 최소 단위(1틱)와 다른 단위 비교

두 번째 예제는 TimeSpan이 표현할 수 있는 가장 작은 단위인 1틱부터 1시간까지 다양한 TimeSpan 객체를 생성하여 비교합니다. 특히 TimeSpan.FromTicks(1)과 new TimeSpan(1)은 동일한 값을 나타내므로 비교 결과가 0으로 출력되는 점에 주목하세요.

using System;
public class Demo {
    public static void Main() {
        TimeSpan span1 = TimeSpan.FromTicks(1);
        TimeSpan span2 = new TimeSpan(1);
        TimeSpan span3 = TimeSpan.FromHours(1);
        TimeSpan span4 = TimeSpan.FromMilliseconds(1);
        TimeSpan span5 = TimeSpan.FromMinutes(1);
        TimeSpan span6 = TimeSpan.FromMinutes(1);
        Console.WriteLine("TimeSpan1 = "+span1);
        Console.WriteLine("TimeSpan2 = "+span2);
        Console.WriteLine("TimeSpan3 = "+span3);
        Console.WriteLine("TimeSpan4 = "+span4);
        Console.WriteLine("TimeSpan5 = "+span5);
        Console.WriteLine("Result (Comparison of span1 and span2) = "+TimeSpan.Compare(span1, span2));
        Console.WriteLine("Result (Comparison of span2 and span3) = "+TimeSpan.Compare(span2, span3));
        Console.WriteLine("Result (Comparison of span1 and span3) = "+TimeSpan.Compare(span1, span3));
        Console.WriteLine("Result (Comparison of span3 and span4) = "+TimeSpan.Compare(span3, span4));
        Console.WriteLine("Result (Comparison of span4 and span5) = "+TimeSpan.Compare(span4, span5));
    }
}

실행 결과

TimeSpan1 = 00:00:00.0000001
TimeSpan2 = 00:00:00.0000001
TimeSpan3 = 01:00:00
TimeSpan4 = 00:00:00.0010000
TimeSpan5 = 00:01:00
Result (Comparison of span1 and span2) = 0
Result (Comparison of span2 and span3) = -1
Result (Comparison of span1 and span3) = -1
Result (Comparison of span3 and span4) = 1
Result (Comparison of span4 and span5) = -1

핵심 정리

  • FromTicks()는 틱 단위의 long 값을 받아 해당 시간 간격의 TimeSpan을 반환합니다.
  • 1틱 = 100나노초이며, 따라서 10,000,000틱 = 1초입니다.
  • 음수 틱 값을 전달하면 음의 시간 간격도 표현할 수 있습니다.
  • TimeSpan.Compare(a, b)는 a가 b보다 크면 1, 작으면 -1, 같으면 0을 반환합니다.