计算每个月有多少周,和某年月多少周?求高手指点!!

liu2184609 2011-12-12 09:50:08
我有要两个要GridView填的字段,一个是要绑定每个月的周,另一个是要绑定某年的周!

如比:计算每个月有多少周!2011-7 就要显示7月有几个周, 周数从星期日至星期六算一个周

计算某年有多少个周!比如:2011-11-20 显示11月份20号是这年的第几个周!

求高手代码!!
...全文
588 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
orain 2011-12-12
  • 打赏
  • 举报
回复
其实可以优化一下,只要计算第一天的所在周有几天就可以了,然后用总天数减去第一周所占天数 / 7,如果有余数,周数就是 (总天数 - 第一周所占天数) / 7 + 2,如果无余数就是 (总天数 - 第一周所占天数) / 7 + 1
orain 2011-12-12
  • 打赏
  • 举报
回复
对于月,判断每月一号是周几,判断每月最后一天是周几,然后用该月的总天数减去第一周和周后一周所占去的天数 / 7 然后加上首周和尾周。年也是同样的算法,都是算头尾,然后用总天数减头尾所在周天数除以7。至于你用 JS 还是 C# 来写,都无所谓了。
facelessvoidhj 2011-12-12
  • 打赏
  • 举报
回复
你不是要计算每个月有多少周么,比如12月份,你把12月31号传进去呗,得出12月31号是第几周,那么12月份就有几周啊。
liu2184609 2011-12-12
  • 打赏
  • 举报
回复
我这个是DropDownList下拉框呀
facelessvoidhj 2011-12-12
  • 打赏
  • 举报
回复
给你个方法
//判断改天为此月的第几周 weekstart=1(周1算第一天)weekstart=2(周日算第一天)
protected int WeekOfMonth(DateTime day,int WeekStart)
{
DateTime firstofmonth;
firstofmonth=Convert.ToDateTime(day.Date.Year+"-"+day.Date.Month+"-"+1);
if(i==0)
{
i=7;
}
if(WeekStart==1)
{
return (day.Date.Day+i-2)/7+1;
}
if(WeekStart==2)
{
return (day.Date.Day+i-2)/7;
}
return 0;
}

然后你把该月的最后一天传进去就知道该月有几周了,每个月知道了,一年也就知道了,遍历一下就行了
姣游天下 2011-12-12
  • 打赏
  • 举报
回复
http://download.csdn.net/detail/jiangzhanchang/3776388
liu2184609 2011-12-12
  • 打赏
  • 举报
回复
都不是我要的答案,有可能是我没说清楚!


int year年, month月;

//年和月是下拉框绑定好了,今年第几周也是个DropDownList3,当我选择年,就把周数显示出来,再选月,就把他在那个月的第几周显示出来。知道一年有52和53周,但要显示在DropDownList里面

year = int.Parse(DropDownList1.SelectedValue);
month = int.Parse(DropDownList2.SelectedValue);
DateTime weekstart = new DateTime(year, month, 1);

求代码
蝶恋花雨 2011-12-12
  • 打赏
  • 举报
回复
 已经设定好了本学期第一个星期星期一的日期,怎样根据当前时间获取获取周次呢

DateTime dtime=DateTime.Now;

string datetime = "2011-3-1";//本学期第一个星期一的日期

TimeSpan ts1 = new TimeSpan(dtime.Ticks);
TimeSpan ts2 = new TimeSpan(Convert.ToDateTime(datetime).Ticks);
TimeSpan ts = ts2.Subtract(ts1).Duration();

//确定此时间在一年中的位置
int dayOfYear = ts.Days;
//本学期第一天
DateTime tempDate = new DateTime(Convert.ToDateTime(datetime).Year, Convert.ToDateTime(datetime).Month, Convert.ToDateTime(datetime).Day);

int tempDayOfWeek = (int)tempDate.DayOfWeek;
tempDayOfWeek = tempDayOfWeek == 0 ? 7 : tempDayOfWeek;
////确定星期几
int index = (int)dtime.DayOfWeek;
index = index == 0 ? 7 : index;

//当前周的范围
DateTime retStartDay = dtime.AddDays(-(index - 1));
DateTime retEndDay = dtime.AddDays(7 - index);

//确定当前是第几周
int weekIndex = (int)Math.Ceiling(((double)dayOfYear + tempDayOfWeek) / 7);
Response.Write("当前是第"+weekIndex+"周");

蝶恋花雨 2011-12-12
  • 打赏
  • 举报
回复
移驾参考
http://wenku.baidu.com/view/f23f9b67f5335a8102d22014.html
http://hi.baidu.com/yssc/blog/item/db24d1580e68c68d810a18ee.html
http://www.cnblogs.com/wulg/archive/2011/03/17/1986994.html

orain 2011-12-12
  • 打赏
  • 举报
回复
一个 JS 的解决方案:

// 计算当前日期在本年度的周数
Date.prototype.getWeekOfYear = function(weekStart) { // 每周开始于周几:周日:0,周一:1,周二:2 ...
weekStart = (weekStart || 0) - 0;
if(isNaN(weekStart) || weekStart > 6)
weekStart = 0;

var year = this.getFullYear();
var firstDay = new Date(year, 0, 1);
var firstWeekDays = 7 - firstDay.getDay() + weekStart;
var dayOfYear = (((new Date(year, this.getMonth(), this.getDate())) - firstDay) / (24 * 3600 * 1000)) + 1;
return Math.ceil((dayOfYear - firstWeekDays) / 7) + 1;
}

// 计算当前日期在本月份的周数
Date.prototype.getWeekOfMonth = function(weekStart) {
weekStart = (weekStart || 0) - 0;
if(isNaN(weekStart) || weekStart > 6)
weekStart = 0;

var dayOfWeek = this.getDay();
var day = this.getDate();
return Math.ceil((day - dayOfWeek - 1) / 7) + ((dayOfWeek >= weekStart) ? 1 : 0);
}

var date = new Date(2011, 11, 18); // 注意:JS 中月的取值范围为 0~11
alert(date.getWeekOfYear() + "," + date.getWeekOfMonth());

// 2011 年度有几周
(new Date(2011, 11, 31)).getWeekOfYear();
// 2011 年度 1 月有几周
(new Date(2011, 0, 31)).getWeekOfMonth();

62,266

社区成员

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

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

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

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