C#의 DateTimeOffset.AddTicks() 메서드는 현재 인스턴스가 나타내는 날짜·시간 값에 지정한 수만큼의 틱(tick)을 더하는 데 사용됩니다. 틱은 .NET에서 시간을 측정하는 가장 작은 단위로, 1틱은 100나노초(ns)에 해당합니다.
문법(Syntax)
메서드의 기본 문법은 다음과 같습니다.
public DateTimeOffset AddTicks (long val);
매개변수 val에는 더할 틱 수를 지정합니다. 값을 빼고 싶다면 음수를 전달하면 됩니다. 반환값은 틱이 더해진 새로운 DateTimeOffset 객체이며, 원본 인스턴스는 변경되지 않습니다.
시간 간격별 틱 수
틱 단위는 매우 작기 때문에 실제 개발에서는 초, 분, 일 등의 시간 간격을 틱으로 환산해 사용하는 경우가 많습니다. 주요 시간 간격별 틱 수는 다음과 같습니다.
| 시간 간격 | 틱 수 |
|---|---|
| 1초 | 10,000,000 |
| 1분 | 600,000,000 |
| 1시간 | 36,000,000,000 |
| 1일 | 864,000,000,000 |
| 1주 | 6,048,000,000,000 |
| 1개월 | 해당 월의 일수에 따라 다름 |
| 1년(평년) | 315,360,000,000,000 |
| 1년(윤년) | 316,224,000,000,000 |
예제 1: 틱 더하기
다음은 AddTicks() 메서드를 사용해 3초(30,000,000틱)를 더하는 예제입니다.
using System;
public class Demo {
public static void Main() {
DateTimeOffset dateTimeOffset = new DateTimeOffset(2019, 11, 11, 8, 20, 10, new TimeSpan(-5, 0, 0));
Console.WriteLine("틱 추가 전 DateTimeOffset = {0}", dateTimeOffset);
// 3초 = 30,000,000틱
DateTimeOffset res = dateTimeOffset.AddTicks(30000000);
Console.WriteLine("틱 추가 후 DateTimeOffset = {0}", res);
}
}실행 결과
틱 추가 전 DateTimeOffset = 11/11/2019 8:20:10 AM -05:00 틱 추가 후 DateTimeOffset = 11/11/2019 8:20:13 AM -05:00
실행 결과를 보면 시간이 정확히 3초 증가해 8:20:13으로 출력된 것을 확인할 수 있습니다.
예제 2: 틱 빼기
음수 값을 전달하면 틱을 뺄 수도 있습니다. 아래 예제는 2초(20,000,000틱)를 빼는 코드입니다.
using System;
public class Demo {
public static void Main() {
DateTimeOffset dateTimeOffset = new DateTimeOffset(2019, 11, 11, 8, 20, 10, new TimeSpan(-5, 0, 0));
Console.WriteLine("틱 차감 전 DateTimeOffset = {0}", dateTimeOffset);
// 2초 = 20,000,000틱
DateTimeOffset res = dateTimeOffset.AddTicks(-20000000);
Console.WriteLine("틱 차감 후 DateTimeOffset = {0}", res);
}
}실행 결과
틱 차감 전 DateTimeOffset = 11/11/2019 8:20:10 AM -05:00 틱 차감 후 DateTimeOffset = 11/11/2019 8:20:08 AM -05:00
정리
DateTimeOffset.AddTicks() 메서드는 나노초 수준의 정밀한 시간 연산이 필요할 때 유용합니다. 1틱 = 100나노초라는 규칙만 기억하면 초, 분, 시간 단위의 연산도 손쉽게 처리할 수 있으며, 음수 값을 사용하면 시간을 뺄 수도 있습니다. 또한 이 메서드는 기존 객체를 수정하지 않고 새로운 DateTimeOffset 객체를 반환한다는 점도 함께 기억해 두면 좋습니다.