C#에서 DateTime.Subtract() 메서드는 지정된 DateTime 값 또는 TimeSpan(시간 간격)을 현재 날짜·시간에서 빼는 데 사용됩니다. 이 메서드는 두 가지 오버로드 형태를 제공하며, 어떤 인수를 전달하느냐에 따라 반환되는 결과가 달라집니다.
DateTime.Subtract() 메서드 문법
DateTime.Subtract() 메서드의 기본 문법은 다음과 같습니다.
public TimeSpan Subtract (DateTime value); public DateTime Subtract (TimeSpan value);
- DateTime 객체를 인수로 전달하는 경우: 두 날짜 사이의 차이를 나타내는
TimeSpan이 반환됩니다. - TimeSpan 객체를 인수로 전달하는 경우: 해당 시간 간격만큼 뺀 새로운
DateTime이 반환됩니다.
예제 1: 두 DateTime 값의 차이 구하기
다음은 DateTime.Subtract() 메서드를 사용하여 두 날짜 사이의 차이를 계산하는 예제입니다.
using System;
public class Demo {
public static void Main() {
DateTime d1 = new DateTime(2019, 10, 10, 8, 10, 40);
DateTime d2 = new DateTime(2017, 11, 06, 8, 10, 40);
Console.WriteLine("Date 1 = "+d1);
Console.WriteLine("Date 2 = "+d2);
TimeSpan res = d1.Subtract(d2);
Console.WriteLine("TimeSpan between two dates = {0} ",res);
}
}실행 결과
위 코드를 실행하면 다음과 같은 출력 결과를 얻을 수 있습니다.
Date 1 = 10/10/2019 8:10:40 AM Date 2 = 11/6/2017 8:10:40 AM TimeSpan between two dates = 703.00:00:00
출력 결과를 보면 두 날짜 사이의 차이가 703일임을 알 수 있습니다. TimeSpan은 일, 시간, 분, 초 단위로 차이를 표현합니다.
예제 2: DateTime에서 TimeSpan 빼기
이번에는 DateTime 값에서 특정 시간 간격(TimeSpan)을 빼는 예제를 살펴보겠습니다.
using System;
public class Demo {
public static void Main() {
DateTime d = new DateTime(2019, 10, 10, 8, 10, 40);
TimeSpan t = new TimeSpan(1, 10, 10, 12);
Console.WriteLine("Date = "+d);
DateTime res = d.Subtract(t);
Console.WriteLine("DateTime between date d and timespan t = {0} ",res);
}
}실행 결과
위 코드를 실행하면 다음과 같은 출력 결과가 나타납니다.
Date = 10/10/2019 8:10:40 AM DateTime between date d and timespan t = 10/8/2019 10:00:28 PM
이 예제에서는 원래 날짜인 2019년 10월 10일 오전 8시 10분 40초에서 1일 10시간 10분 12초를 뺀 결과가 계산되어 2019년 10월 8일 오후 10시 0분 28초라는 새로운 DateTime 값이 반환되었습니다.
정리
DateTime.Subtract() 메서드는 인수 타입에 따라 동작이 달라진다는 점을 기억하면 됩니다. DateTime을 빼면 TimeSpan(기간 차이)이 반환되고, TimeSpan을 빼면 DateTime(새로운 날짜·시간)이 반환됩니다. 이를 활용하면 날짜 계산, 기간 측정, 마감일 산정 등 다양한 날짜·시간 처리 작업을 손쉽게 구현할 수 있습니다.