分享

c#获取当前日期是今年第几周

 偷心无痕 2014-10-28
  /// <summary>
        /// 取指定日期是一年中的第几周
        /// </summary>
        /// <param name="dt">给定的日期</param>
        /// <returns>数字 一年中的第几周</returns>
        private static int DatePart(DateTime dt)
        {
            int weeknow = Convert.ToInt32(dt.DayOfWeek);//今天星期几
            int daydiff = (-1) * (weeknow + 1);//今日与上周末的天数差
            int days = System.DateTime.Now.AddDays(daydiff).DayOfYear;//上周末是本年第几天
            int weeks = days / 7;
            if (days % 7 != 0)
            {
                weeks++;
            }
            //此时,weeks为上周是本年的第几周
            return (weeks + 1);
        }

找的上面这个函数可以获取,但是第一周的处理不好,显示的是53周而不是1周

=================分割线=====================

后又根据本人最近的思路,写下了如下的程序,解决了上面第一周处理不好的地方,注释连着看就是我求解的思路算法

private static int GetWeekOfYear()
        {
            //一.找到第一周的最后一天(先获取1月1日是星期几,从而得知第一周周末是几)
            int firstWeekend=7-Convert.ToInt32(DateTime.Parse(DateTime.Today.Year + "-1-1").DayOfWeek);
           
            //二.获取今天是一年当中的第几天
            int currentDay = DateTime.Today.DayOfYear;

            //三.(今天 减去 第一周周末)/7 等于 距第一周有多少周 再加上第一周的1 就是今天是今年的第几周了
            //    刚好考虑了惟一的特殊情况就是,今天刚好在第一周内,那么距第一周就是0 再加上第一周的1 最后还是1
            return Convert.ToInt32(Math.Ceiling((currentDay - firstWeekend) / 7.0)) + 1;
        }


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多