날짜 범위를 나타내는 2 개의 날짜를 입력해야합니다. 이 주어진 날짜에 대해 해당 날짜 사이에있는 시즌 목록을 반환해야합니다. 해당 범위 사이의 모든 날을 반복 할 필요없이 솔루션을 가질 수 있습니까?
예를 들어 날짜 : 2014 년 12 월 25 일-2015 년 7
월 17 일 결과는 겨울, 봄, 여름이됩니다.
시즌은 이미 상수 값
시즌으로 지정됩니다 .
예를 들어 상수는 아래와 같이 저장됩니다. 내가 찾은 주요 문제는 겨울 시즌입니다. 1 년이 1 년 증가하고 월이 1부터 시작되기 때문입니다.
DateTimeOffset winterStart= new DateTimeOffset(year, 12, 21,0,0,0,new TimeSpan(0));
DateTimeOffset winterEnd = new DateTimeOffset(year, 03, 19, 0, 0, 0, new TimeSpan(0));
DateTimeOffset springStart = new DateTimeOffset(year, 03, 20,0,0,0,new TimeSpan(0));
DateTimeOffset springEnd = new DateTimeOffset(year, 06, 19, 0, 0, 0, new TimeSpan(0));
DateTimeOffset summerStart = new DateTimeOffset(year, 06, 20, 0, 0, 0, new TimeSpan(0));
DateTimeOffset summerEnd = new DateTimeOffset(year, 09, 21, 0, 0, 0, new TimeSpan(0));
DateTimeOffset autumStart = new DateTimeOffset(year, 09, 22, 0, 0, 0, new TimeSpan(0));
DateTimeOffset autumEnd = new DateTimeOffset(year, 12, 20, 0, 0, 0, new TimeSpan(0));
시즌에 지정된 특정 날짜 범위를 사용하는 경우 해당 범위에서 매일 확인할 필요가 없습니다. 3 개월에 한 번해야한다고 생각합니다.
// get start and end as DateTime
int year;
DateTime springStart, summerStart, autumnStart, winterStart;
for (DateTime date = start; date < end; date = date.AddMonths(3))
{
year = date.Year;
springStart = new DateTime(year, 3, 21);
//etc...
if (date >= springStart && date < summerStart)
{ //etc...}
else if (date >= winterStart || date < springStart)
{ //etc...}
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다