C# DateTime 시간 함수란?
C#의 DateTime 구조체는 날짜와 시간을 함께 다루는 강력한 도구입니다. 하루 중 지나간 시간(시, 분 등)을 계산하는 것처럼 날짜와 시간 모두에 대한 다양한 메서드와 속성을 제공합니다.
이 글에서는 그중에서도 시간(time) 관련 함수에 초점을 맞춰 살펴보겠습니다.
모든 함수의 전체 목록은 MSDN(Microsoft Developer Network) 공식 문서를 참고하시기 바랍니다.
C# 주요 시간 관련 메서드
| 번호 | 메서드 & 속성 |
|---|---|
| 1 | AddDays(Double) 현재 인스턴스 값에 지정된 일수를 더한 새로운 DateTime을 반환합니다. |
| 2 | AddHours(Double) 현재 인스턴스 값에 지정된 시간 수를 더한 새로운 DateTime을 반환합니다. |
| 3 | AddMilliseconds(Double) 현재 인스턴스 값에 지정된 밀리초를 더한 새로운 DateTime을 반환합니다. |
| 4 | AddMinutes(Double) 현재 인스턴스 값에 지정된 분을 더한 새로운 DateTime을 반환합니다. |
| 5 | AddSeconds(Double) 현재 인스턴스 값에 지정된 초를 더한 새로운 DateTime을 반환합니다. |
| 6 | AddYears(Int32) 현재 인스턴스 값에 지정된 연도를 더한 새로운 DateTime을 반환합니다. |
AddMilliseconds() 메서드 예제
위 시간 함수 중 하나인 AddMilliseconds(Double) 메서드를 사용하여 현재 DateTime 값에 지정된 밀리초를 더하는 방법을 알아보겠습니다.
예제 코드
using System;
public class Demo {
public static void Main() {
string dateFormat = "MM/dd/yyyy hh:mm:ss.fffffff";
DateTime dateCurrent = new DateTime(2018, 7, 23, 13, 0, 0);
Console.WriteLine("Original date: {0} ({1:N0} ticks)\n", dateCurrent.ToString(dateFormat), dateCurrent.Ticks);
DateTime dateNew = dateCurrent.AddMilliseconds(1);
Console.WriteLine("Next date: {0} ({1:N0} ticks)", dateNew.ToString(dateFormat), dateNew.Ticks);
}
}실행 결과
Original date: 07/23/2018 01:00:00.0000000 (636,679,476,000,000,000 ticks) Next date: 07/23/2018 01:00:00.0010000 (636,679,476,000,010,000 ticks)
결과 분석
실행 결과를 보면 원래 시각(2018년 7월 23일 오전 1시)에 1밀리초가 더해져 시간 문자열의 소수점 이하 자릿수 값이 변경되었음을 확인할 수 있습니다.
또한 내부적으로 저장되는 틱(tick) 값이 정확히 10,000만큼 증가했습니다. .NET에서 1틱은 100나노초에 해당하므로, 1밀리초 = 10,000틱이라는 규칙이 코드 실행 결과에도 그대로 반영됩니다.
이처럼 DateTime의 Add 계열 메서드는 원본 값을 변경하지 않고 새로운 DateTime 객체를 반환하기 때문에, 기존 데이터를 안전하게 유지하면서 시간 계산을 수행할 수 있다는 장점이 있습니다.