퇴근5분전

달력 컨트롤 소스임. Web용임.

달력을 쉽게 만들려면
DateTime을 가지고 쉽게 제작이 가능함.

요구사항에 적합한 달력을 만들기 위해서 새로운 달력이 필요하다면 한번쯤 만들어보는것도
괜찮은 듯 함.
중요한 부분만 글씨를 굵게 표시 했음.




 private void create(int year, int month)
    {

        DateTime date = new DateTime(year, month, 1); // 해당년월에 1일.

        ctrl_CalendarBody.Text = "day : " + DateTime.DaysInMonth(year, month).ToString(); // 총 일수
        ctrl_CalendarBody.Text += "week : " + date.DayOfWeek.ToString();
        int totalDay = DateTime.DaysInMonth(year, month);

        StringBuilder sb = new StringBuilder("<table width=\"700\" border=\"1\" cellspacing=\"5\" cellpadding=\"3\"><tr><td bgcolor=\"FFFFFF\">");
        string[] dayofweek = Enum.GetNames(typeof(DayOfWeek));

        sb.AppendFormat("<tr align=center>");
        for (int i = 0; i < dayofweek.Length; i++)
            sb.AppendFormat("<td style=\"width: 100px;height: 30px;\">{0}</td>", dayofweek[i].Substring(0, 3));
        sb.AppendFormat("</tr>");
        sb.AppendFormat("<tr>");
        string style = string.Empty;
        string text = string.Empty;
        for (int day = 1 - (int)date.DayOfWeek; day <= totalDay; day++)
        {
            //설정
            if ((day + (int)date.DayOfWeek) % 7 == 0) // 토요일
                style = string.Format("color:{0};", "blue");
            else if ((day + (int)date.DayOfWeek) % 7 == 1) // 일요일
                style = string.Format("color:{0};", "red");
            else
                style = string.Format("color:{0};", "black"); // 월 ~ 금요일


            if (day <= 0)
                text = "&nbsp";
            else
            {
                if (day == DateTime.Now.Day && year == DateTime.Now.Year && month == DateTime.Now.Month) // 오늘 날짜 표시
                {
                    style += "font-weight:bold;";
                    text = day.ToString();
                }
                else
                    text = day.ToString();
            }

            //해당값 입력.
            sb.AppendFormat("<td style=\"{1}\">{0}</td>", text, style);
            if (0 == (day + (int)date.DayOfWeek) % 7) // 다음주~ 로 넘어가는 부분   DayofWeek 요일 열거형
                sb.Append("</tr><tr>");               // (day + (int)date.DayOfWeek) % 7  나머지가 0

            style = string.Empty;
        }
        sb.AppendFormat("</tr>");
        sb.AppendFormat("</table>");
        ctrl_CalendarBody.Text = sb.ToString();
        sb.Remove(0, sb.Length);
        sb = null;
    }