高手帮忙,算日历的问题要求如下:排序,参数
参数要求:
开始年,结束年,每列排序3个月(在控制台实现效果)
效果如下:
08.01                           08.02                           08.03
周日 周一 周二 周三 周四 周五 周六   周日 周一 周二 周三 周四 周五 周六   周日 周一 周二 周三 周四 周五 周六
            1    2   3   4    5                       1   2    3     1   2  3    4    5   6   7
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
30 31                           30 31                            30 31
08.04  08.05  08.06
。。。。
  有没那个高手帮忙解决下
------解决方案--------------------
using System;
using System.Collections.Generic;
using System.Text;
namespace CalendarSystem
{
   class Program
   {
       static void Main(string[] args)
       {
           CreateCalendar(2008, 2015);
       }
       public static void CreateCalendar(int startDate, int endDate)
       {
           int start = startDate;
           int end = endDate;
           int months = (end - start + 1) * 12; //月
           for (int i = 0; i < months / 3; i++)
           {
               Console.Write(String.Format("{0}\t\t\t", (GetMonthText(start, i * 3)).ToString()));
               Console.Write(String.Format("{0}\t\t\t", (GetMonthText(start, i * 3 + 1)).ToString()));
               Console.WriteLine(String.Format("{0}", (GetMonthText(start, i * 3 + 2)).ToString()));
               Console.Write("日一二三四五六\t\t");
               Console.Write("日一二三四五六\t\t");
               Console.WriteLine("日一二三四五六");
               for (int j = 0; j < 6; j++)
               {
                   Console.Write(String.Format("{0}\t\t", SetDay(start, i * 3, j)));
                   Console.Write(String.Format("{0}\t\t", SetDay(start, i * 3 + 1, j)));
                   Console.WriteLine(String.Format("{0}", SetDay(start, i * 3 + 2, j)));
               }
           }
           Console.ReadLine();
       }
       public static string GetMonthText(int startYear, int addMonth)
       {
           DateTime dt = new DateTime(startYear, 1, 1);
           DateTime dtReturn = dt.AddMonths(addMonth);
           return dtReturn.Year + "." + dtReturn.Month;
       }
       public static string SetDay(int startYear, int addMonth,double weekNum)
       {
           StringBuilder sb = new StringBuilder();
           DateTime dt = new DateTime(startYear, 1, 1);
           DateTime dtFirst = dt.AddMonths(addMonth);
           DateTime dtWeekFirst ;
           if (weekNum == 0)
           {
               dtWeekFirst = dtFirst;
           }
           else
           {
               double dStart = weekNum * 7 - Convert.ToDouble(dtFirst.DayOfWeek);
               //if (dStart > dtFirst.AddMonths(1).AddDays(-1).Day)
               //{
               //    return "";
               //}
               dtWeekFirst = dtFirst.AddDays(dStart);
           }
           string space = GetSpace(Convert.ToInt32(dtWeekFirst.DayOfWeek));
           sb.Append(space);
           for (double i = Convert.ToDouble(dtWeekFirst.DayOfWeek); i < 7; i++)
           {
               if (dtWeekFirst.AddDays(i).DayOfYear > dtFirst.AddMonths(1).AddDays(-1).DayOfYear || dtWeekFirst.AddDays(i).Year > dtFirst.AddMonths(1).AddDays(-1).Year)
               {
                   sb.Append("  ");
                   continue;
               }
               if (dtWeekFirst.DayOfWeek != 0)
               {
                   sb.Append(dtWeekFirst.AddDays(i - Convert.ToDouble(dtW