C#

[C#]날짜 계산, 날짜 비교

DevStory 2021. 8. 10.

이전 포스팅은 C#에서 DateTime을 사용하는 방법에 대해 간단하게 정리하였습니다.

☞ DataTime 사용 방법 보러 가기

 

이번 포스팅에서는 DateTime을 사용하여 날짜 또는 시간 더하기, 날짜 비교하기, 두 날짜의 차이를 구하는 방법들을 정리합니다.

사용 방법
1. 날짜 또는 시간 더하기
2. 날짜 비교하기
3. 두 날짜의 차이를 계산

1. 날짜 또는 시간 더하기

AddYears, AddMonths, AddDays, AddHours, AddMinutes, AddSeconds 메서드를 사용하여 특정 일자 기준으로 날짜 또는 시간을 더할 수 있습니다.

매개변수가 음수일 경우 기준일자 이전의 날짜 및 시간을 계산합니다.

// 현재날짜 기준
DateTime nowDate = DateTime.Now;

// 1년 전
DateTime oneBefroeYearDate = nowDate.AddYears(-1);

// 1년 후
DateTime oneAfterYearDate = nowDate.AddYears(1);

// 1개월 전
DateTime oneBefroeMonthDate = nowDate.AddMonths(-1);

// 1개월 후
DateTime oneAfterMonthDate = nowDate.AddMonths(1);

// 1일 전
DateTime oneBefroeDayDate = nowDate.AddDays(-1);

// 1일 후
DateTime oneAfterDayDate = nowDate.AddDays(1);

// 1시간 전
DateTime oneBefroeHourDate = nowDate.AddHours(-1);

// 1시간 후
DateTime oneAfterHourDate = nowDate.AddHours(1);

// 10분 전
DateTime oneBefroeMinuteDate = nowDate.AddMinutes(-10);

// 10분 후
DateTime oneAfterMinuteDate = nowDate.AddMinutes(10);

// 30초 전
DateTime oneBefroeSecondDate = nowDate.AddSeconds(-30);

// 30초 후
DateTime oneAfterSecondDate = nowDate.AddSeconds(30);

2. 날짜 비교하기

Compare 메서드를 사용하여 날짜를 비교합니다.

public static int Compare (DateTime A, DateTime B);
반환 값 조건
0 보다 작음 A가 B보다 이전인 경우
0 A와 B가 동일한 날짜인 경우
0 보다 큼 A와 B보다 이후인 경우
// 현재날짜 기준
DateTime nowDate = DateTime.Now;

int nowYear = nowDate.Year;
int nowMonth = nowDate.Month;
int nowDay = nowDate.Day;

// nowDate의 1년 전
DateTime oneBeforeYearDate = new DateTime(nowYear - 1, nowMonth, nowDay);

Console.WriteLine("DateTime.Compare(nowDate, nowDate) : " + DateTime.Compare(nowDate, nowDate));
Console.WriteLine("DateTime.Compare(nowDate, oneBeforeYearDate) : " + DateTime.Compare(nowDate, oneBeforeYearDate));
Console.WriteLine("DateTime.Compare(oneBeforeYearDate, nowDate) : " + DateTime.Compare(oneBeforeYearDate, nowDate));

실행 결과


3. 두 날짜의 차이를 계산

현재 날짜와 1년 전 날짜의 차이는 일 수로 365일입니다. 

Days를 사용하여 일 수를 계산합니다.

TotalDays는 시간 차이도 계산하므로 결과가 정수가 아닙니다.

// 현재날짜 기준
DateTime nowDate = DateTime.Today;

int nowYear = nowDate.Year;
int nowMonth = nowDate.Month;
int nowDay = nowDate.Day;

// nowDate의 1년 전
DateTime oneBeforeYearDate = new DateTime(nowYear - 1, nowMonth, nowDay);

// (DateTime 종료일자 - DateTime 시작일자).Days
Console.WriteLine("(EndDate - StartDate).Days : " + (nowDate - oneBeforeYearDate).Days);

실행 결과

반응형

댓글