C# DateTime 변수 날짜 범위로 FOR 반복문을 돌리는 방법(반복문에 날짜 변수 사용)

C# 닷넷 프로그램을 개발할 때 반복문을 정말 많이 사용하게 됩니다.

C#에서 사용할 수 있는 반복문에는 for, foreach, do, while 문 등 다양하게 제공하고 있습니다.
상황에 맞게 단순히 명령문 또는 명령문 블록을 반복적으로 실행하거나 또는 조건에 부합하는 동안 반복적으로 실행하도록 반복문을 적절히 사용할 수 있습니다.

단순히 지정된 횟수만큼 반복 문을 실행할 때 for 문을 많이 사용하게 됩니다.
for 문이 지정된 횟수만큼 반복 실행하다 보니 지정된 부울 식은 대부분 정수와 같은 숫자 형식으로 처리하게 됩니다.

만약 for 문의 부울 식에 DateTime 변수를 사용해서 날짜 범위의 일 수 만큼 for 문을 돌려야 한다면 어떻게 for 문을 선언해야 할까요?

이번 글에서는 C# DateTime 변수 날짜 범위로 FOR 반복문을 돌리는 방법(반복문에 날짜 변수 사용)에 대해 알아보겠습니다.

C#에서 DateTime 날짜 변수를 for문의 반복 범위로 사용하는 방법

1. 아래 C# 코드는 DataTable을 생성하는 과정에서 테이블 Column을 for 문을 사용하여 가변적으로 생성하는 코드입니다.

2. 만들어 지는 DataTable “tbl“의 컬럼에는 “colDeptCode“, “colDeptName” 그리고 날짜 범위의 “colDay20241020“와 같은 컬럼 이름으로 만들어지게 됩니다.

  • fromDate 변수 : for 문의 initializer 섹션의 변수 선언에서 초기화되는 시작 일자입니다.
    var date = fromDate;
  • toDate 변수 : for 문의 condition 섹션의 조건을 만족할 때까지 실행되는 종료 일자입니다.
    date <= toDate;
  • date = date.AddDays(1) : for 문의 iterator 섹션으로 date 날짜를 1일씩 증가 시킵니다.
DateTime fromDate = DateTime.ParseExact(“2024-10-20”“yyyy-MM-dd”System.Globalization.CultureInfo.InvariantCulture);
DateTime toDate = DateTime.ParseExact(“2024-10-25”“yyyy-MM-dd”System.Globalization.CultureInfo.InvariantCulture);
 
DataTable tbl = new DataTable();
tbl.Columns.Add(“colDeptCode”typeof(string));
tbl.Columns.Add(“colDeptName”typeof(string));
 
for (var date = fromDate; date <= toDate; date = date.AddDays(1))
{
    tbl.Columns.Add(string.Format(“colDay{0}”, date.ToString(“yyyyMMdd”)), typeof(int));
}
 

3. 위의 C# 코드로 만들어진 “tbl” DataTable의 컬럼은 아래 화면과 같습니다.

C# DateTime 변수 날짜 범위로 FOR 반복문을 돌리는 방법(반복문에 날짜 변수 사용)

날짜를 정수형으로 변환한 다음 for 문에서 사용하는 경우 문제점

두 날짜 사이의 일수만큼 반복 문을 실행한다고 했을 때 날짜의 정수형으로 변환한 다음 for 문에서 사용하는 경우가 있습니다.

int iFrom = int.Parse(DateTime.Now.AddDays(-5).ToString(“yyyyMMdd”);
int iTo = int.Parse(DateTime.Now.toString(“yyyyMMdd”);
for (int i = iFrom; i <= iTo; i++) { …. }

위의 코드를 실행했을 때 문제점은 시작일자와 종료일자의 년도나 월이 다른 경우에 발생하게 됩니다.

2024-09-20에서 2024-10-10까지 범위를 위의 코드로 실행할 경우 20240920, 20240921, …, 20240930, 20240931, …, 20240999, 20241001, …, 20241010와 같은 오류가 발생하게 됩니다.

오류를 방지하기 위해서는 별도의 날짜 체크 구문이 포함되어야 합니다.

마무리

이상으로 C#에서 DateTime 날짜 범위로 for 반복 문을 실행하는 방법에 대해 알아보았습니다.

C# 닷넷 프로그램 개발에서 반복 문은 조건 문 다음으로 많이 사용하는 구문이라고 해도 될 정도로 많이 사용하는 구문입니다.





이 글이 도움이 되었기를 바랍니다. ^-^
댓글로 흔적을 남겨 주세요.

답글 남기기