음...
이런 것까지 올려야 하나... 하는 생각이 들긴 하지만. ^^;
평소 알고 지내는 개발자 한 분이, 질문을 해오셨습니다.
.NET의 DateTime과 TimeSpan으로는 두 날짜 간의 달 수를 계산할 수 없다고 하면서 도움을 청하셨지요.
오호... 정말 그렇습니다. ^^
DateTime - DateTime = TimeSpan
값이 나오는데요.
TimeSpan은 말 그대로 시간차를 나타내는 것일 뿐 그것으로 "달(Month)" 수를 계산하진 못했습니다. 최대 "날짜의 수" 까지만 나옵니다.
무리도 아닙니다. "한 달"이라는 것은 윤달일 수도 있고, 30/31일 등이 교차하는 경우도 있으니, TimeSpan에서 그 값을 구한다는 것은 불가능하지요.
그래도 어쩌겠습니까...! ^^ 없는 방법에서 최대한 우아하게 만들어야 하지 않겠습니까? ^^
저 같은 경우에는, 다음과 같이 만들어 보았는데요.
혹시 더 좋은 알고리듬을 알고 계신 분은 공유 부탁드리겠습니다. ^^
public int GetDiffMonths( DateTime from, DateTime to )
{
int diff = 0;
DateTime added = from;
while ( true )
{
added = added.AddMonths( 1 );
if ( added > to )
{
return diff;
}
diff ++;
}
}