+ -
当前位置:首页 → 问答吧 → 求算法!!!!!!!!!急

求算法!!!!!!!!!急

时间:2011-12-10

来源:互联网

用做一个html日期显示的表格
是7*6格式的(42个格)

我用一个

[code=C#]
        for   (int   i   =   0;   i   <   6;   i++)     //拼接tr
                {
                              for   (int   i   =   0;   i   <   7;   i++)       //拼接td
                                  {
                                         
                                            //这地方没有什么算法根据本月第一天是星期几跳过拼接显示空白
                                            //还有就是最后一天的后面也是空白(一共42个格)
                                  }                        
                  }

[/code]

作者: yaoyuchiccc   发布时间: 2011-12-10

C# code

for   (int   i   =   0;   i   <   6;   i++)     //拼接tr 
                { 
                              for   (int   j   =   0;   j   <   7;   i++)       //拼接td 
                                  { 
                                          
                                            //这地方没有什么算法根据本月第一天是星期几跳过拼接显示空白 
                                            //还有就是最后一天的后面也是空白(一共42个格) 
                                  }                         
                  } 


作者: yaoyuchiccc   发布时间: 2011-12-10

可以啊
你可以加
for (int i = 0; i < 7; i++)  
{
 if(i<(int)DateTimeFirstDat.DayOfWeek) {
  html+="<td></td>";
}
else
html+="<td>"+0+"</td>";

}

作者: net_lover   发布时间: 2011-12-10

引用 2 楼 net_lover 的回复:
可以啊
你可以加
for (int i = 0; i < 7; i++)
{
if(i<(int)DateTimeFirstDat.DayOfWeek) {
html+="<td></td>";
}
else
html+="<td>"+0+"</td>";

}

哥看全问题·你那只能显示第一行
其它的满行都是错的
最后一样也是错的

作者: yaoyuchiccc   发布时间: 2011-12-10

//给定如何一个日期
DateTime x = new DateTime(2011, 10, 13);
//得到该日期的第一天
DateTime d1 = new DateTime(x.Year, x.Month, 1); 
//得到该日期的最后一天
DateTime d2 = d1.AddMonths(1).AddDays(-1); 
int startWeek = (int)d1.DayOfWeek;
int endWeek = (int)d2.DayOfWeek;
String html = "<table border=1>";
for (int j = 0; j < 6; j++) //拼接tr 
{
  html += "<tr>";
  for (int i = 0; i < 7; i++) //拼接td 
  {
  if ((i < startWeek && j==0) || (i > endWeek && 5 == j))
  {
  html += "<td>&nbsp;</td>";
  }
   
  else
  {
  html += "<td>存在</td>";
  }
  }
  html += "</tr>";
}

html += "</table>";

Response.Write(html);

作者: net_lover   发布时间: 2011-12-10

引用 3 楼 yaoyuchiccc 的回复:
引用 2 楼 net_lover 的回复:
可以啊
你可以加
for (int i = 0; i < 7; i++)
{
if(i<(int)DateTimeFirstDat.DayOfWeek) {
html+="<td></td>";
}
else
html+="<td>"+0+"</td>";

}

哥看全问题·你那只能显示第一行
其它的满行都是错的
最后一样……

自己一点脑子都不想动啊,给你个提示还是不会写啊

作者: net_lover   发布时间: 2011-12-10

C# code

    private string BuildCalendar(int year, int month)
    {
        DateTime date = new DateTime(year, month, 1);
        int days = date.AddMonths(1).AddDays(-1).Day;
        
        System.Text.StringBuilder table = new System.Text.StringBuilder("<table border='1'>");
        string fmt = "<td>{0}</td>";

        int week = (int)date.DayOfWeek;
        if (week != 0)
            table.Append("<tr><td colspan='" + week + "'>空白</td>");

        for (int i = 1; i <= days; ++i)
        {
            week %= 7;
            if (week == 0)
                table.Append("<tr>");
            table.AppendFormat(fmt, i);
            if (week == 6)
                table.Append("</tr>");
            ++week;
        }

        if (week < 7)
            table.Append("<td colspan='" + (7 - week) + "'>空白</td></tr>");

        table.Append("</table>");

        return table.ToString();
    }

作者: orain   发布时间: 2011-12-10

日历表
C# code
//给定如何一个日期
DateTime x = new DateTime(2011, 10, 13);
//得到该日期的第一天的星期
DateTime d1 = new DateTime(x.Year, x.Month, 1);
DateTime d2 = d1.AddMonths(1).AddDays(-1);
int startWeek = (int)d1.DayOfWeek;
int endWeek = (int)d2.DayOfWeek;
String html = "<table border=1>";
int day = 0;
String[] weekName = { "", "", "", "", "", "", "" };
for (int j = 0; j < 6; j++)     //拼接tr 
{
  if (j == 0)
  {
    html += "<tr>";
    for (int i = 0; i < 7; i++)
    {
      html += "<th>星期" + weekName[i] + "</th>";
    }
    html += "</tr>";
  }
  html += "<tr>";
  for (int i = 0; i < 7; i++)       //拼接td 
  {
    if ((i < startWeek && j == 0) || (i > endWeek && 5 == j))
    {
      html += "<td>&nbsp;</td>";
    }
    else
    {
      html += "<td>" + (++day) + "</td>";
    }
  }
  html += "</tr>";
}

html += "</table>";
Response.Write(html);

作者: net_lover   发布时间: 2011-12-10

引用 5 楼 net_lover 的回复:
引用 3 楼 yaoyuchiccc 的回复:
引用 2 楼 net_lover 的回复:
可以啊
你可以加
for (int i = 0; i < 7; i++)
{
if(i<(int)DateTimeFirstDat.DayOfWeek) {
html+="<td></td>";
}
else
html+="<td>"+0+"</td>";

}

哥看全问题·你……

说这话时候之前先试试你代码好使不好使

作者: yaoyuchiccc   发布时间: 2011-12-10

直接测试下
日历表

//给定如何一个日期
DateTime x = new DateTime(2011, 10, 13);
//得到该日期的第一天的星期
  DateTime d1 = new DateTime(x.Year, x.Month, 1);
  DateTime d2 = d1.AddMonths(1).AddDays(-1);
  int startWeek = (int)d1.DayOfWeek;
  int endWeek = (int)d2.DayOfWeek;
  String html = "<table border=1>";
  int day = 0;
  int days = d2.Day;
  for (int j = 0; j < 6; j++)
  {
  html += "<tr>";
  for (int i = 0; i < 7; i++)
  {
  if ((i < startWeek && j == 0) || (i > endWeek && 5 == j) || (day >= days))
  {
  html += "<td>&nbsp;</td>";
  }
  else
  {
  html += "<td>" + (++day) + "</td>";
  }
  }
  html += "</tr>" + Environment.NewLine;
  if (day >= days) break;
   
  }

  html += "</table>";
  Response.Write(html);

作者: net_lover   发布时间: 2011-12-10

引用 9 楼 net_lover 的回复:
直接测试下
日历表

//给定如何一个日期
DateTime x = new DateTime(2011, 10, 13);
//得到该日期的第一天的星期
DateTime d1 = new DateTime(x.Year, x.Month, 1);
DateTime d2 = d1.AddMonths(1).AddDays(-1);
int startWeek = (int)d1……

你耍猴呢?看你嵌套循环几个i?if哪个i·不用试了

作者: yaoyuchiccc   发布时间: 2011-12-10

你拷贝试了没有?你运行看了吗?这么长的代码我不试一下子我就给贴出来?

作者: net_lover   发布时间: 2011-12-10

第一个循环是写文字的, 你不要可以去掉,

作者: net_lover   发布时间: 2011-12-10

引用 12 楼 net_lover 的回复:
第一个循环是写文字的, 你不要可以去掉,


C# code

DateTime x = DateTime.Now;
            //得到该日期的第一天的星期
            DateTime d1 = new DateTime(x.Year, x.Month, 1);
            DateTime d2 = d1.AddMonths(1).AddDays(-1);
            int startWeek = (int)d1.DayOfWeek;
            int endWeek = (int)d2.DayOfWeek;
            int days = d2.Day;
            int day = 0;


            sb.Append("<table id=\"bigCal\" class=\"pripackage_date_list\"  cellpadding=\"0\" cellspacing=\"0\">");
            #region
            for (int t = 0; t < 2; t++)
            {
                if (t == 0)
                {
                    sb.Append("<thead>");
                }
                else
                {
                    sb.Append("</tbody>");
                }

                int endStart = t == 1 ? 6 : 1;
                for (int i = 0; i < endStart; i++)
                {

                    sb.Append("<tr>");
                    for (int j = 0; j < 7; j++)
                    {
                        #region -加载星期几表头
                        if (endStart == 1) //第一行?
                        {
                            string strClass = "";
                            if (j == 0)
                                strClass = "class=\"pripackage_sun\"";
                            else if (j == 6)
                                strClass = "class=\"pripackage_sat\"";
                            sb.Append("<td " + strClass + ">星期" + nStr1[j] + "</td>");

                        }
                        #endregion
                        #region -加载日期
                        else
                        {


                            if ((i < startWeek && j == 0) || (i > endWeek && 5 == j) || (day >= days))
                            {
                                sb.Append("<td></td>");
                            }
                            else
                            {
                                sb.Append("<td class=\"\"><div class=\"pripackage_dateon\"><span></span>" + (++day) + "<dfn class=\"pripackage_state03\">&nbsp;</dfn><div class=\"base_price\"><dfn>&#165;</dfn>3,760起</div></div></td>");
                            }
                        }
                        #endregion
                    }

                }
                if (t == 0)
                {
                    sb.Append("</thead>");
                }
                else
                {
                    sb.Append("</tbody>");
                }
            }
            sb.Append("</table>");
            return sb.ToString();

作者: yaoyuchiccc   发布时间: 2011-12-10

引用 12 楼 net_lover 的回复:
第一个循环是写文字的, 你不要可以去掉,


写出来了
C# code

       if (i == 0)
                            {
                                if (j < firstDayWeek)
                                {

                                    sb.Append("<td></td>");
                                }
                                else
                                {
                                    sb.Append("<td class=\"\"><div class=\"pripackage_dateon\"><span></span>" + (++day) + "<dfn class=\"pripackage_state03\">&nbsp;</dfn><div class=\"base_price\"><dfn>&#165;</dfn>3,760起</div></div></td>");
                                    day++;
                                }
                            }
                            else
                            {
                                if (days <= day)
                                    sb.Append("<td></td>");
                                else
                                {
                                    sb.Append("<td class=\"\"><div class=\"pripackage_dateon\"><span></span>" + (++day) + "<dfn class=\"pripackage_state03\">&nbsp;</dfn><div class=\"base_price\"><dfn>&#165;</dfn>3,760起</div></div></td>");
                                    day++;
                                }
                            }

作者: yaoyuchiccc   发布时间: 2011-12-10

http://topic.csdn.net/u/20111108/23/d28f5539-063b-4754-9879-9a061861ec27.html

作者: Sandy945   发布时间: 2011-12-12

相关阅读 更多

热门下载

更多