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

yaoyuchiccc 2011-12-10 02:59:38
用做一个html日期显示的表格
是7*6格式的(42个格)

我用一个


for (int i = 0; i < 6; i++) //拼接tr
{
for (int i = 0; i < 7; i++) //拼接td
{

//这地方没有什么算法根据本月第一天是星期几跳过拼接显示空白
//还有就是最后一天的后面也是空白(一共42个格)
}
}

...全文
198 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
烟波钓 2012-01-16
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 yaoyuchiccc 的回复:]
引用 16 楼 icedmilk 的回复:

这种东西用服务端来做就是个错误
现在人都说ASP性能差,我看最主要的原因是用的人不专业。

jquery的ui已经有日历这功能了
HTML code

<!DOCTYPE html>
<html>
<head>
<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.……
[/Quote]攻击性太强 这种人不建议过来问问题
yaoyuchiccc 2012-01-16
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 icedmilk 的回复:]

这种东西用服务端来做就是个错误
现在人都说ASP性能差,我看最主要的原因是用的人不专业。

jquery的ui已经有日历这功能了
HTML code

<!DOCTYPE html>
<html>
<head>
<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.cs……
[/Quote]
你的意思就是我不专业呗`你ui控件支持绑定数据吗`你怎么就知道我单纯做的日期控件
wxc137 2011-12-12
  • 打赏
  • 举报
回复
搞过类似的日历表,搞好长时间的。。
Icedmilk 2011-12-12
  • 打赏
  • 举报
回复
这种东西用服务端来做就是个错误
现在人都说ASP性能差,我看最主要的原因是用的人不专业。

jquery的ui已经有日历这功能了

<!DOCTYPE html>
<html>
<head>
<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css" rel="stylesheet"

type="text/css"/>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script>

<script>
$(document).ready(function() {
$("#datepicker").datepicker();
});
</script>
</head>
<body style="font-size:62.5%;">

<div type="text" id="datepicker"></div>

</body>
</html>

保存为HTML文件看效果
yaoyuchiccc 2011-12-10
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 net_lover 的回复:]
第一个循环是写文字的, 你不要可以去掉,
[/Quote]

写出来了

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\"> </dfn><div class=\"base_price\"><dfn>¥</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\"> </dfn><div class=\"base_price\"><dfn>¥</dfn>3,760起</div></div></td>");
day++;
}
}
yaoyuchiccc 2011-12-10
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 net_lover 的回复:]
第一个循环是写文字的, 你不要可以去掉,
[/Quote]


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\"> </dfn><div class=\"base_price\"><dfn>¥</dfn>3,760起</div></div></td>");
}
}
#endregion
}

}
if (t == 0)
{
sb.Append("</thead>");
}
else
{
sb.Append("</tbody>");
}
}
sb.Append("</table>");
return sb.ToString();
孟子E章 2011-12-10
  • 打赏
  • 举报
回复
第一个循环是写文字的, 你不要可以去掉,
孟子E章 2011-12-10
  • 打赏
  • 举报
回复
你拷贝试了没有?你运行看了吗?这么长的代码我不试一下子我就给贴出来?
yaoyuchiccc 2011-12-10
  • 打赏
  • 举报
回复
[Quote=引用 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……
[/Quote]
你耍猴呢?看你嵌套循环几个i?if哪个i·不用试了
孟子E章 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> </td>";
}
else
{
html += "<td>" + (++day) + "</td>";
}
}
html += "</tr>" + Environment.NewLine;
if (day >= days) break;

}

html += "</table>";
Response.Write(html);
yaoyuchiccc 2011-12-10
  • 打赏
  • 举报
回复
[Quote=引用 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>";

}

哥看全问题·你……
[/Quote]
说这话时候之前先试试你代码好使不好使
孟子E章 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;
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> </td>";
}
else
{
html += "<td>" + (++day) + "</td>";
}
}
html += "</tr>";
}

html += "</table>";
Response.Write(html);
orain 2011-12-10
  • 打赏
  • 举报
回复

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();
}
孟子E章 2011-12-10
  • 打赏
  • 举报
回复
[Quote=引用 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>";

}

哥看全问题·你那只能显示第一行
其它的满行都是错的
最后一样……
[/Quote]
自己一点脑子都不想动啊,给你个提示还是不会写啊
孟子E章 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> </td>";
}

else
{
html += "<td>存在</td>";
}
}
html += "</tr>";
}

html += "</table>";

Response.Write(html);
yaoyuchiccc 2011-12-10
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 net_lover 的回复:]
可以啊
你可以加
for (int i = 0; i < 7; i++)
{
if(i<(int)DateTimeFirstDat.DayOfWeek) {
html+="<td></td>";
}
else
html+="<td>"+0+"</td>";

}
[/Quote]
哥看全问题·你那只能显示第一行
其它的满行都是错的
最后一样也是错的
孟子E章 2011-12-10
  • 打赏
  • 举报
回复
可以啊
你可以加
for (int i = 0; i < 7; i++)
{
if(i<(int)DateTimeFirstDat.DayOfWeek) {
html+="<td></td>";
}
else
html+="<td>"+0+"</td>";

}
yaoyuchiccc 2011-12-10
  • 打赏
  • 举报
回复

for (int i = 0; i < 6; i++) //拼接tr
{
for (int j = 0; j < 7; i++) //拼接td
{

//这地方没有什么算法根据本月第一天是星期几跳过拼接显示空白
//还有就是最后一天的后面也是空白(一共42个格)
}
}

62,040

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧