• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C#获取当前日期当年的周数

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

这几天跨年,项目上遇到了一个周数计算的问题。

2016年的元旦是周五开始的,之前系统计算的是属于15年的第53个周,但是年份已经到了16年了。

公司要求从1月1号周五开始算作16年的第一个周,今天1月4号也就是周一,开始算作16年的第二个周。

第一件事先百度,看看有没有现成的轮子,但是百度出来的都有问题。然后自己找了个案例修改了下。

网上的解决方案是这样子的。

        //一.找到第一周的最后一天(先获取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;

2016年还没问题,但是到了2017年1月1号,那天刚好是周日,就开始算错了。

然后稍微做了修改,之后是这样。

 

       var dt = new DateTime(2017, 01, 01);
            //找到今年的第一天是周几
            int firstWeekend = Convert.ToInt32(DateTime.Parse(dt.Year + "-1-1").DayOfWeek);

            //获取第一周的差额,如果是周日,则firstWeekend为0,第一周也就是从周天开始的。
            int weekDay = firstWeekend == 0 ? 1 : (7 - firstWeekend + 1);

            //获取今天是一年当中的第几天
            int currentDay = dt.DayOfYear;

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

 

计算正确。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
PepperAPI(PPAPI)参考之一、PepperCAPI参考(稳定版)发布时间:2022-07-14
下一篇:
一段简单c程序的汇编语言学习(ubuntu+x86)发布时间:2022-07-14
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap