가령 등분이 15일인데 실제 기간은 4일일경우 4일 이후는 같은 값이
계속 나오는 문제가 있었습니다. 이와 같은 경우는 단순하게 1씩 더해서
시작일과 종료일 기간만큼만 화면에 출력하고 종료하는 로직으로 변경하였습니다.
using System; using System.Collections.Generic; using System.Text; namespace DurationDay { ////// 어떤 시작과 종료 되는 시점의 기간(duration)을 일정 지정한 간격만큼 /// 배분하는 로직 /// class Program { static void Main(string[] args) { // 시작/종료일 string fromDate = "2012-05-01"; string toDate = "2012-05-05"; int portion = 0; int mod = 0; int addCount = 0; int i = 0; int addDay = 0; DateTime day = new DateTime(); // 시작/종료일 날짜형 변환 DateTime fromDt = DateTime.Parse(fromDate); DateTime toDt = DateTime.Parse(toDate); // 날짜 기간 (분모) int duration = DayCount(fromDt, toDt); // 기간 등분 (분자) int numerator = 14; if (duration > numerator) { // 날짜 사이의 간격(몫) portion = duration / numerator; // 나머지 mod = duration % numerator; // 기간 등분만큼 Loop 반복 do { // 나머지 수 만큼 앞에서부터 +1을 더함 if (i <= mod) { addCount = i * (portion + 1); addDay = portion + 1; day = fromDt.AddDays(addCount); } else { addCount += (portion); addDay = portion; day = fromDt.AddDays(addCount); } i++; Console.WriteLine("NO : {0} : {1} / {2} / {3}", i >= 10 ? i.ToString() : "0" + i.ToString(), day.ToString("yyyy-MM-dd"), addCount, addDay); } while (i <= numerator); } else { // 시작일과 종료일의 기간이 등분한 날짜보다 작을때... // 전체 날짜 표시 for (; i <= duration; i++) { numerator = addCount; addCount = i; addDay = addCount; day = fromDt.AddDays(addCount); int disCnt = i + 1; Console.WriteLine("NO : {0} : {1} / {2} / {3}", disCnt >= 10 ? disCnt.ToString() : "0" + disCnt.ToString(), day.ToString("yyyy-MM-dd"), addCount, addDay); } } Console.WriteLine("duration : {0}", duration); Console.WriteLine("numerator : {0}", numerator); Console.WriteLine("portion : {0}", portion); Console.WriteLine("mod : {0}", mod); Console.ReadLine(); } static int DayCount(DateTime fromDt, DateTime ToDt) { TimeSpan ts = ToDt - fromDt; return ts.Days; } } }
기간이 짧을경우
기간이 긴경우
'닷넷 프로그래밍(~2012)' 카테고리의 다른 글
시작일과 종료일 기간 체크 및 날짜 등분 (0) | 2012.05.05 |
---|---|
시작과 종료일 날짜 간격 구하는 로직 (0) | 2012.05.03 |
SilverlightTeskTop Application Program (0) | 2008.12.12 |
Silverlight ChartBuilder 소스코드 및 데모 업데이트 (0) | 2008.12.12 |
Silverlight Toolkit 2008년 12월 버전 릴리즈 (0) | 2008.12.10 |
Visual Studio 2010 and .NET Framework 4.0 Training Kit - November Preview (0) | 2008.11.30 |
Silverlight Tools(RC1) 한국어버전 출시 (2) | 2008.11.25 |
SQL 2008 설치전 몇가지 고려사항 (0) | 2008.11.25 |