C#의 TimeSpan.Add() 메서드는 지정한 TimeSpan 객체와 현재 인스턴스의 값을 더한 결과를 담은 새로운 TimeSpan 객체를 반환합니다. 원본 인스턴스는 변경되지 않으며, 항상 새 객체가 생성된다는 점에 유의하세요.
문법(Syntax)
메서드의 기본 문법은 다음과 같습니다.
public TimeSpan Add (TimeSpan span);
매개변수 span은 현재 인스턴스에 더할 시간 간격을 나타냅니다. 만약 연산 결과가 TimeSpan.MinValue보다 작거나 TimeSpan.MaxValue보다 커지면 OverflowException이 발생할 수 있습니다.
예제 1
먼저 Add() 메서드의 기본적인 동작을 살펴보겠습니다.
using System;
public class Demo {
public static void Main(){
TimeSpan span1 = new TimeSpan(2, 17, 20, 30);
TimeSpan span2 = new TimeSpan(3, 18, 25, 25);
TimeSpan span3 = new TimeSpan(-8, 30, 0);
TimeSpan res1 = span1.Add(span2);
TimeSpan res2 = span2.Add(span3);
Console.WriteLine("Final Timespan (TimeSpan1 + TimeSpan2) = "+res1);
Console.WriteLine("Final Timespan (TimeSpan2 + TimeSpan3) = "+res2);
}
}출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Final Timespan (TimeSpan1 + TimeSpan2) = 6.11:45:55 Final Timespan (TimeSpan2 + TimeSpan3) = 3.10:55:25
세 개의 TimeSpan 객체를 생성한 뒤, Add() 메서드로 두 구간씩 더해 결과를 출력했습니다. 음수로 지정된 TimeSpan도 문제없이 처리되는 것을 확인할 수 있습니다.
예제 2
이번에는 음수 시간 간격과 TimeSpan.MinValue를 활용한 극단적인 경우를 살펴보겠습니다.
using System;
public class Demo {
public static void Main(){
TimeSpan span1 = new TimeSpan(-6, 25, 0);
TimeSpan span2 = new TimeSpan(1, 11, 25, 20);
TimeSpan span3 = TimeSpan.MinValue;
TimeSpan res1 = span1.Add(span2);
TimeSpan res2 = span2.Add(span3);
Console.WriteLine("Final Timespan (TimeSpan1 + TimeSpan2) = "+res1);
Console.WriteLine("Final Timespan (TimeSpan2 + TimeSpan3) = "+res2);
}
}출력 결과
실행 결과는 다음과 같습니다.
Final Timespan (TimeSpan1 + TimeSpan2) = 1.05:50:20 Final Timespan (TimeSpan2 + TimeSpan3) = -10675197.15:22:45.4775808
두 번째 예제에서는 TimeSpan이 표현할 수 있는 최솟값인 TimeSpan.MinValue(약 -10,675,199일)를 더해 보았습니다. 이 값보다 더 작아지는 연산을 수행하면 OverflowException이 발생하므로, 범위가 큰 시간 계산 시에는 주의하는 것이 좋습니다.
참고: TimeSpan 타입은 + 연산자를 오버로딩하고 있기 때문에 span1 + span2처럼 연산자를 사용하면 내부적으로 Add() 메서드가 호출됩니다. 따라서 가독성을 높이고 싶다면 + 연산자를 사용하는 것도 좋은 선택입니다.