C# - 날짜 계산, DateTime 시간 더하기 빼기

DateTime에 일/시/분/초 등의 시간을 더하거나 빼는 방법을 소개합니다. 또한 두개의 DateTime 객체의 시간 차이를 계산하는 방법을 소개합니다.

1. DateTime에 시간 더하기/빼기

1.1 시간 더하기

DateTime.Add(TimeSpan)은 DateTime에 TimeSpan의 시간을 추가합니다.

TimeSpan(days, hours, minutes, seconds)은 인자로 주어진 시간의 범위 정보를 갖고 있습니다.

아래와 같이 DateTime에 TimeSpan에 설정된 시간만큼 추가할 수 있습니다.

namespace Example {
    public class Program {
        public static void Main(string[] args) {

            DateTime today = DateTime.Now;
            TimeSpan duration = new TimeSpan(10, 10, 10, 10);

            DateTime result = today.Add(duration);

            Console.WriteLine("today: " + today);
            Console.WriteLine("result: " + result);
        }
    }
}

Output:

today: 12/10/2022 10:16:14 AM
result: 12/20/2022 8:26:24 PM

다른 방법으로, DateTimeAddDays(), AddHours() 같은 add 메소드를 제공합니다. 이 메소드들을 이용하여 시간을 더할 수 있습니다.

namespace Example {
    public class Program {
        public static void Main(string[] args) {

            DateTime today = DateTime.Now;

            DateTime result = today.AddDays(1)
                                   .AddHours(1)
                                   .AddMinutes(10)
                                   .AddSeconds(20);

            Console.WriteLine("today: " + today);
            Console.WriteLine("result: " + result);
        }
    }
}

Output:

today: 12/10/2022 10:27:53 AM
result: 12/11/2022 11:38:13 AM

1.2 시간 빼기

DateTime.Subtract(TimeSpan)은 DateTime에서 TimeSpan의 시간을 뺍니다.

namespace Example {
    public class Program {
        public static void Main(string[] args) {

            DateTime today = DateTime.Now;
            TimeSpan duration = new TimeSpan(10, 10, 10, 10);

            DateTime result = today.Subtract(duration);

            Console.WriteLine("today: " + today);
            Console.WriteLine("result: " + result);
        }
    }
}

Output:

today: 12/10/2022 10:29:21 AM
result: 11/30/2022 12:19:11 AM

다른 방법으로, AddDays() 같은 메소드를 이용할 때, 입력 시간을 음수로 설정하면 DateTime에서 일정 시간을 뺄 수 있습니다.

namespace Example {
    public class Program {
        public static void Main(string[] args) {

            DateTime today = DateTime.Now;

            DateTime result = today.AddDays(-1)
                                   .AddHours(-1)
                                   .AddMinutes(-10)
                                   .AddSeconds(-20);

            Console.WriteLine("today: " + today);
            Console.WriteLine("result: " + result);
        }
    }
}

Output:

today: 12/10/2022 10:28:44 AM
result: 12/9/2022 9:18:24 AM

2. 두개의 DateTime의 시간 차이

아래 예제처럼, datetime2 - datetime2 처럼 - 연산자로 두개의 DateTime 객체를 빼면 시간 차이 정보를 갖고 있는 TimeSpan을 리턴합니다.

TimeSpan.Days 등의 변수로 특정 단위 시간을 가져올 수 있습니다.

namespace Example {
    public class Program {
        public static void Main(string[] args) {

            DateTime datetime1 = DateTime.Parse("2022-12-10 10:18:21");
            DateTime datetime2 = DateTime.Parse("2022-12-15 11:38:41");

            TimeSpan duration = datetime2 - datetime1;
            Console.WriteLine("duration: " + duration);
            Console.WriteLine("Days: " + duration.Days);
            Console.WriteLine("Hours: " + duration.Hours);
            Console.WriteLine("Minutes: " + duration.Minutes);
            Console.WriteLine("Seconds: " + duration.Seconds);
        }
    }
}

Output:

duration: 5.01:20:20
Days: 5
Hours: 1
Minutes: 20
Seconds: 20
Loading script...

Related Posts

codechachaCopyright ©2019 codechacha