C#关于日期月天数和一年有多少周及某年某周时间段的计算
2009-11-15 14:29 观海看云 阅读(412) 评论(0) 收藏 举报 /// <summary>
/// <summary> /// 当前月有多少天
        /// 当前月有多少天 /// </summary>
        /// </summary> /// <param name="y"></param>
        /// <param name="y"></param> /// <param name="m"></param>
        /// <param name="m"></param> /// <returns></returns>
        /// <returns></returns> public static int HowMonthDay(int y, int m)
        public static int HowMonthDay(int y, int m) {
        { int mnext;
            int mnext; int ynext;
            int ynext; if (m < 12)
            if (m < 12) {
            { mnext = m + 1;
                mnext = m + 1; ynext = y;
                ynext = y; }
            } else
            else {
            { mnext = 1;
                mnext = 1; ynext = y + 1;
                ynext = y + 1; }
            } DateTime dt1 = System.Convert.ToDateTime(y + "-" + m + "-1");
            DateTime dt1 = System.Convert.ToDateTime(y + "-" + m + "-1"); DateTime dt2 = System.Convert.ToDateTime(ynext + "-" + mnext + "-1");
            DateTime dt2 = System.Convert.ToDateTime(ynext + "-" + mnext + "-1"); TimeSpan diff = dt2 - dt1;
            TimeSpan diff = dt2 - dt1; return diff.Days;
            return diff.Days; }
        }
 /// <summary>
        /// <summary> /// 得到一年中的某周的起始日和截止日
        /// 得到一年中的某周的起始日和截止日 /// 年 nYear
        /// 年 nYear /// 周数 nNumWeek
        /// 周数 nNumWeek /// 周始 out dtWeekStart
        /// 周始 out dtWeekStart /// 周终 out dtWeekeEnd
        /// 周终 out dtWeekeEnd /// </summary>
        /// </summary> /// <param name="nYear"></param>
        /// <param name="nYear"></param> /// <param name="nNumWeek"></param>
        /// <param name="nNumWeek"></param> /// <param name="dtWeekStart"></param>
        /// <param name="dtWeekStart"></param> /// <param name="dtWeekeEnd"></param>
        /// <param name="dtWeekeEnd"></param> public static void GetWeek(int nYear, int nNumWeek, out   DateTime dtWeekStart, out   DateTime dtWeekeEnd)
        public static void GetWeek(int nYear, int nNumWeek, out   DateTime dtWeekStart, out   DateTime dtWeekeEnd) {
        { DateTime dt = new DateTime(nYear, 1, 1);
            DateTime dt = new DateTime(nYear, 1, 1); dt = dt + new TimeSpan((nNumWeek - 1) * 7, 0, 0, 0);
            dt = dt + new TimeSpan((nNumWeek - 1) * 7, 0, 0, 0); dtWeekStart = dt.AddDays(-(int)dt.DayOfWeek + (int)DayOfWeek.Monday);
            dtWeekStart = dt.AddDays(-(int)dt.DayOfWeek + (int)DayOfWeek.Monday); dtWeekeEnd = dt.AddDays((int)DayOfWeek.Saturday - (int)dt.DayOfWeek + 1);
            dtWeekeEnd = dt.AddDays((int)DayOfWeek.Saturday - (int)dt.DayOfWeek + 1); }
        }
 /// <summary>
        /// <summary> /// 求某年有多少周
        /// 求某年有多少周 /// 返回 int
        /// 返回 int /// </summary>
        /// </summary> /// <param name="strYear"></param>
        /// <param name="strYear"></param> /// <returns>int</returns>
        /// <returns>int</returns> public static int GetYearWeekCount(int strYear)
        public static int GetYearWeekCount(int strYear) {
        { string returnStr = "";
            string returnStr = "";
 System.DateTime fDt = DateTime.Parse(strYear.ToString() + "-01-01");
            System.DateTime fDt = DateTime.Parse(strYear.ToString() + "-01-01"); int k = Convert.ToInt32(fDt.DayOfWeek);//得到该年的第一天是周几
            int k = Convert.ToInt32(fDt.DayOfWeek);//得到该年的第一天是周几  if (k == 1)
            if (k == 1) {
            { int countDay = fDt.AddYears(1).AddDays(-1).DayOfYear;
                int countDay = fDt.AddYears(1).AddDays(-1).DayOfYear; int countWeek = countDay / 7 + 1;
                int countWeek = countDay / 7 + 1; return countWeek;
                return countWeek;
 }
            } else
            else {
            { int countDay = fDt.AddYears(1).AddDays(-1).DayOfYear;
                int countDay = fDt.AddYears(1).AddDays(-1).DayOfYear; int countWeek = countDay / 7 + 2;
                int countWeek = countDay / 7 + 2; return countWeek;
                return countWeek; }
            }
 }
        }
 /// <summary>
        /// <summary> /// 求当前日期是一年的中第几周
        /// 求当前日期是一年的中第几周 /// </summary>
        /// </summary> /// <param name="date"></param>
        /// <param name="date"></param> /// <returns></returns>
        /// <returns></returns> public static int WeekOfYear(DateTime curDay)
        public static int WeekOfYear(DateTime curDay) {
        { int firstdayofweek = Convert.ToInt32(Convert.ToDateTime(curDay.Year.ToString() + "- " + "1-1 ").DayOfWeek);
            int firstdayofweek = Convert.ToInt32(Convert.ToDateTime(curDay.Year.ToString() + "- " + "1-1 ").DayOfWeek);
 int days = curDay.DayOfYear;
            int days = curDay.DayOfYear; int daysOutOneWeek = days - (7 - firstdayofweek);
            int daysOutOneWeek = days - (7 - firstdayofweek);
 if (daysOutOneWeek <= 0)
            if (daysOutOneWeek <= 0) {
            { return 1;
                return 1; }
            } else
            else {
            { int weeks = daysOutOneWeek / 7;
                int weeks = daysOutOneWeek / 7; if (daysOutOneWeek % 7 != 0)
                if (daysOutOneWeek % 7 != 0) weeks++;
                    weeks++;
 return weeks + 1;
                return weeks + 1; }
            } }
        }
出处:http://www.cnblogs.com/zhangtao/
文章版权归本人所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
 
                     
                    
                 
                    
                

 
             
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号