개발노트/C#
[C#] 오늘은 몇 주차 일까? - 주차 구하기
lovvepearl
2024. 3. 22. 15:58
//using System;
//using System.IO;
//using System.Collections.Generic;
//수행일 주차 구하기
DateTime today = DateTime.Now; //당일
int year = today.Year;
int month = today.Month;
DayOfWeek rule = DayOfWeek.Monday; //주 시작 기준일(월요일)
DateTime firstDateOfMonth = today.AddDays(1-today.Day); //수행일 속한 월의 1일
DateTime firstDateOfMonthLastWeek = firstDateOfMonth.AddDays(-((firstDateOfMonth.DayOfWeek + 7 - rule) % 7)).AddDays(6); //월의 1일이 속한 주의 마지막 날(일요일)
DateTime firstDateOfWeek = today.AddDays(-((today.DayOfWeek + 7 - rule) % 7)); //수행일 속한 주의 첫 날(월요일)
DateTime lastDateOfWeek = today.AddDays(-((today.DayOfWeek + 7 - rule) % 7)).AddDays(6); //수행일 속한 주의 마지막 날(일요일)
int week = 0;
//수행일이 속한 월과 수행일이 속한 주의 마지막 날의 월이 다를 경우, 1주차
if(firstDateOfMonth.Month != lastDateOfWeek.Month) {
week = 1;
month += 1;
if(firstDateOfMonth.Year != lastDateOfWeek.Year) {
year += 1;
}
} else {
//수행일이 속한 주의 마지막 날의 일자 - 수행일이 속한 월의 마지막 요일의 일자 / 7 + 1
week = (lastDateOfWeek.Day - firstDateOfMonthLastWeek.Day) / 7 + 1;
}
return Convert.ToString(year) + "년 " + Convert.ToString(month) +"월 " + Convert.ToString(week) + "주차";