参数要求:
开始年,结束年,每列排序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 3108.04 08.05 08.06
。
有没那个高手帮忙解决下
开始年,结束年,每列排序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 3108.04 08.05 08.06
。
有没那个高手帮忙解决下
解决方案 »
- 又是关于正则表达式的
- 超难的问题,别嫌分少来看看
- GridView 高手帮帮忙! 如何延长显示全部内容的层存在的时间 20+100
- 简单问题,解决给分
- 老出一个错误提示, 大家帮看看问题出在哪里吧. 太感谢了!
- C#写的类,添加了XML注释(///<summary> myremark ///</summary> ) ,为什么编译为dll后,这些函数参数注释却没有显示?
- 如何让一个DataTable成为bindingSource的数据源?
- 读写文本文件的问题
- 哪位好心人有邮件发送和接收的源程序给小弟一份,分不是问题!!
- 帮帮忙,好吗?
- 求C#内存对齐示例代码
- 通过DataAdapter对象操作DataSet实现更新数据库 与 直接使用SqlCommand + SQL来操作 哪个效率高?
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(dtWeekFirst.DayOfWeek)).Day.ToString("d2"));
}
else
{
sb.Append(dtWeekFirst.AddDays(i).Day.ToString("d2"));
}
}
return sb.ToString();
} public static string GetSpace(int num)
{
StringBuilder sb = new StringBuilder();
if (num == 0)
{
return "";
} for (int i = 0; i <= num; i++)
{
sb.Append(" ");
}
return sb.ToString();
}
}
}
控制台的样式太难控制了,基本达到你的要求了.粘贴运行一下就行.