Sampson-Li
Sampson.Li学习经验总结博客 学历代表过去,能力代表现在.学习力代表未来!
 1 ///<summary> 
2 /// 统计一段时间内有多少个星期几
3 ///</summary>
4 ///<param name= "AStart "> 开始日期 </param>
5 ///<param name= "AEnd "> 结束日期 </param>
6 ///<param name= "AWeek "> 星期几 </param>
7 ///<returns> 返回个数 </returns>
8 public int TotalWeeks(DateTime AStart, DateTime AEnd, DayOfWeek AWeek)
9 {
10 TimeSpan vTimeSpan = new TimeSpan(AEnd.Ticks - AStart.Ticks);
11 int Result = (int)vTimeSpan.TotalDays / 7;
12 for (int i = 0; i <= vTimeSpan.TotalDays % 7; i++)
13 if (AStart.AddDays(i).DayOfWeek == AWeek)
14 return Result + 1;
15 return Result;
16 } /* TotalWeeks */
17
18 private void button1_Click(object sender, EventArgs e)
19 {
20 Console.WriteLine(TotalWeeks(new DateTime(2007, 06, 01),
21 new DateTime(2007, 06, 30), DayOfWeek.Monday));
22 }

获取一个月的第一天和最后一天

C#

int year = DateTime.Now.Year;
int month = DateTime.Now.Month;

DateTime firstDayOfThisMonth = new DateTime(year, month, 1);
DateTime lastDayOfThisMonth = new DateTime(year, month, DateTime.DaysInMonth(year, month));

SQL获取当前月有几个星期

select DATEPART(WEEK,DATEADD(MONTH, 1, GETDATE() - DAY(GETDATE()) + 1) - 1)//当前月最后一天是第几周
select DATEPART(WEEK,GETDATE() - DAY(GETDATE()) + 1 )//当前月第一天是第几周
select DATEPART(WEEK,DAY(DATEADD(MONTH, 1, GETDATE() - DAY(GETDATE()) + 1) - 1 -(GETDATE() - DAY(GETDATE()) + 1)))//当前月总共有几周

C# 当前月有几周

 int year = DateTime.Now.Year;
int month = DateTime.Now.Month;
DateTime firstDay = new DateTime(year, month, 1);
DateTime lastDay= new DateTime(year, month, DateTime.DaysInMonth(year, month));

//一.找到第一周的最后一天(先获取1月1日是星期几,从而得知第一周周末是几)
int firstWeekend=firstDay.DayOfYear+(7-Convert.ToInt32(firstDay.DayOfWeek));

//二.获取今天是一年当中的第几天
int currentDay =lastDay.DayOfYear;
//三.(最后一天 减去 第一周周末那一天)/7 等于 距第一周有多少周 再加上第一周的1 就是这个月的周数
//刚好考虑了惟一的特殊情况就是,今天刚好在第一周内,那么距第一周就是0 再加上第一周的1 最后还是1
Response.Write(Convert.ToInt32(Math.Ceiling((currentDay - firstWeekend) / 7.0)) + 1);





编辑器加载中...

posted on 2011-12-07 09:14  Sampson  阅读(3466)  评论(1编辑  收藏  举报