对“C#写的简单的日历,窗体输出。”的改写,精简了一半多代码
原文:http://hi.baidu.com/wosxiaoyao/item/1837b791fde008d57b7f014f
其中的输出日历类Calendar如下:
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Windows.Forms;public class Calendar{ public void PrintCalendar(int year, int month, TextBox textbox) { StringBuilder builder = new StringBuilder(); builder.Append(" 日 一 二 三 四 五 六\r\n"); int hawdays = GetWeeksOfDate(year, month, 1); //这个月的第一天星期几 int days = GetDaysOfMonth(year, month); //获取想要输出月份的天数 for (int i = 1; i <= hawdays * 3; i++) //打印第一排前面的空格 { builder.Append(" "); } for (int j = 1; j <= days; j++) { builder.Append(j.ToString().PadLeft(3, ' ')); if ((hawdays + j) % 7 == 0) builder.Append("\r\n"); } textbox.Text = builder.ToString(); } //计算星期几: 星期日至星期六的值为0-6 public static int GetWeeksOfDate(int year, int month, int day) { DateTime dt = new DateTime(year, month, day); DayOfWeek d = dt.DayOfWeek; return Convert.ToInt32(d); } //获取指定年月的天数 public static int GetDaysOfMonth(int year, int month) { DateTime dtCur = new DateTime(year, month, 1); int days = dtCur.AddMonths(1).AddDays(-1).Day; return days; } }