주어진 달 수만큼 날짜를 이동하려고하고 있지만 같은 날을 유지하려고합니다 (예 : 날짜가 월요일 일 경우와 함께 이동 한 후 x 개월이 목요일이면 새 획득 날짜에서 3 일을 뺍니다.이 알고리즘은 새로 획득 한 날짜에 따라 요일을 더하거나 뺍니다 (기본적으로 같은 요일을 나타내는 가장 가까운 날짜를 제공). 예를 들어, 시작일이 10.08.2016 (수요일)이고 3 개월을 추가하면 10.11.2016 (목요일)이 될 것이므로 그날 가장 가까운 수요일은 09.11.2016입니다. 나는까지 만들어 관리 어떤개월 단위로 날짜 이동하지만 같은 날로 유지하십시오.
는지금과 같은 : startDay를가 시작 날짜를, 그리고 기간은 내가으로 이동 할 개월 수입니다
int startDayOfWeek = ((int)startDay.DayOfWeek) == 0 ? 7 : (int)startDay.DayOfWeek;
int newStartDayOfWeek = ((int)startDay.AddMonths(period).DayOfWeek) == 0 ? 7 : (int)startDay.AddMonths(period).DayOfWeek;
int shiftingDays = startDayOfWeek - newStartDayOfWeek;
if (shiftingDays > 3)
shiftingDays -= 7;
.
하지만 여전히 몇 번 실패하므로 팁을 주시면 감사하겠습니다.
이 코드가 될 것이다 실패 예 : 의 startDate = 2016년 1월 8일 (월)과 기간은 5 개월 추가 한 후 5 될 것이라고, 나는 일요일 2017년 1월 1일를 얻고, 가장 가까운 월요일에있을 것입니다 02.01.2017,하지만 6 일이 걸립니다.
어떤 상황에서 실패합니까? – ChrisF
사용 : 새 DateTime (startDayOfWeek.Year, startDayOfWeek.month + 1, startDayOfWeek.day). – jdweng
예를 들어, 1 월 31 일을 1 개월 단위로 이동할 때 어떻게해야합니까? – CompuChip