来自:http://blog.csdn.net/vrhero/archive/2008/01/13/2042481.aspx

/// <summary>
/// 获取一年中指定的一周的开始日期和结束日期。开始日期遵循ISO 8601即星期一。
/// </summary>
/// <remarks>Write by vrhero</remarks>
/// <param name="year">年(1 到 9999)</param>
/// <param name="weeks">周(1 到 53)</param>
/// <param name="weekrule">确定首周的规则</param>
/// <param name="first">当此方法返回时,则包含参数 year 和 weeks 指定的周的开始日期的 System.DateTime 值;如果失败,则为 System.DateTime.MinValue。如果参数 year 或 weeks 超出有效范围,则操作失败。该参数未经初始化即被传递。</param>
/// <param name="last">当此方法返回时,则包含参数 year 和 weeks 指定的周的结束日期的 System.DateTime 值;如果失败,则为 System.DateTime.MinValue。如果参数 year 或 weeks 超出有效范围,则操作失败。该参数未经初始化即被传递。</param>
/// <returns>成功返回 true,否则为 false。</returns>
public static bool GetDaysOfWeeks(int year, int weeks, CalendarWeekRule weekrule, out DateTime first, out DateTime last)
{
    //初始化 out 参数
    first = DateTime.MinValue;
    last = DateTime.MinValue;

    //不用解释了吧...
    if (year < 1 | year > 9999)
        return false;

    //一年最多53周地球人都知道...
    if (weeks < 1 | weeks > 53)
        return false;

    //取当年首日为基准...为什么?容易得呗...
    DateTime firstCurr = new DateTime(year, 1, 1);
    //取下一年首日用于计算...
    DateTime firstNext = new DateTime(year + 1, 1, 1);

    //将当年首日星期几转换为数字...星期日特别处理...ISO 8601 标准...
    int dayOfWeekFirst = (int)firstCurr.DayOfWeek;
    if (dayOfWeekFirst == 0) dayOfWeekFirst = 7;

    //得到未经验证的周首日...
    first = firstCurr.AddDays((weeks - 1) * 7 - dayOfWeekFirst + 1);

    //周首日是上一年日期的情况...
    if (first.Year < year)
    {
        switch (weekrule)
        {
            case CalendarWeekRule.FirstDay:
                //不用解释了吧...
                first = firstCurr;
                break;
            case CalendarWeekRule.FirstFullWeek:
                //顺延一周...
                first = first.AddDays(7);
                break;
            case CalendarWeekRule.FirstFourDayWeek:
                //周首日距年首日不足4天则顺延一周...
                if (firstCurr.Subtract(first).Days > 3)
                {
                    first = first.AddDays(7);
                }
                break;
            default:
                break;
        }
    }

    //得到未经验证的周末日...
    last = first.AddDays(7).AddSeconds(-1);

    //周末日是下一年日期的情况...
    if (last.Year > year)
    {
        switch (weekrule)
        {
            case CalendarWeekRule.FirstDay:
                last = firstNext.AddSeconds(-1);
                break;
            case CalendarWeekRule.FirstFullWeek:
                //不用处理
                break;
            case CalendarWeekRule.FirstFourDayWeek:
                //周末日距下一年首日不足4天则提前一周...
                if (firstNext.Subtract(first).Days < 4)
                {
                    first = first.AddDays(-7);
                    last = last.AddDays(-7);
                }
                break;
            default:
                break;
        }
    }
    return true;
}

转:[C#]获取某年指定周的开始日期和结束日期的通用方法相关推荐

  1. java处理最后一周_Java获取某年某周的最后一天

    package test; import java.text.SimpleDateFormat; import java.util.Calendar; /** * ClassName: LastDay ...

  2. java 一周的第一天_Java获取某年某周的第一天

    Java获取某年某周的第一天 1.设计源代码 FirstDayOfWeek.java: /** * @Title:FirstDayOfWeek.java * @Package:com.you.free ...

  3. Java获取某年某周的第一天

    Java获取某年某周的第一天 1.设计源码 FirstDayOfWeek.java: /*** @Title:FirstDayOfWeek.java* @Package:com.you.freemar ...

  4. php 计算指定年份的周总数与及第几周的开始日期和结束日期(从周一开始)

    /** * 获取某年第几周的开始日期和结束日期 * @param int $year * @param int $week 第几周; */ public function weekday($year, ...

  5. c#日期转换周几_C#获取每个年,月,周的起始日期和结束日期的方法

    这篇文章主要介绍了C#获取每个年,月,周的起始日期和结束日期的方法,涉及C#时间与日期基本操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下 本文实例讲述了C#获取每个年,月,周的起始日期和结束日期 ...

  6. js获取下月时间_js获取某周、某月、下月、某季度的开始日期、结束日期及判断日期第几周...

    //格式化日期:yyyy-MM-dd function formatDate(date) { var myyear = date.getFullYear(); var mymonth = date.g ...

  7. oracle 获取每周五,Oracle获取周几以及每周对应得开始日期和结束日期

    Oracle获取周几以及每周对应得开始日期和结束日期 --获取近一年周的开始日期和结束日期,从星期日开始 select '2014'||sunday.the_week,decode(sign(sund ...

  8. oracle根据日期显示星期几,Oracle获取周几以及每周对应得开始日期和结束日期

    Oracle获取周几以及每周对应得开始日期和结束日期 --获取近一年周的开始日期和结束日期,从星期日开始 select '2014'||sunday.the_week,decode(sign(sund ...

  9. 返回指定月份的周列表 包含 周序号、开始日期、结束日期(不包含周末)

    /*** 返回当前年月的周列表 包含 周序号.开始日期.结束日期(不包含周末)* @param year 年* @param month 月* @returns {Array} */function ...

最新文章

  1. 边城高级中学2021届高考成绩查询,湖南省花垣县边城高级中学2021届高三第二学期学科素养测试英语试题及答案.doc...
  2. 和远程ip_漏洞Microsoft Windows TCP/IP 远程执行代码漏洞威胁通告
  3. 备忘录同步android ios9,IOS备忘录
  4. opencv3 ubuntu安装脚本
  5. mysql库存先进先出_sql 先进先出 库存
  6. extmail集群的邮件负载均衡方案 [lvs dns postfix]
  7. 深入理解浏览器解析和执行过程
  8. Adams中的阻尼比样条设置
  9. eclipse热部署_Spring Boot Devtools热部署
  10. spring管理的类如何调用非spring管理的类
  11. 对Javascript局部变量的理解
  12. 原生态mysql_MySQL 原生操作-速查
  13. Springboot 跨域配置
  14. [健康]生病了绝对不能吃的东西
  15. 天才黑客,阿里安全科学家吴翰清:做对事只能赢一场,跟对人可以赢一生
  16. 关于数据可视化图表的制作,你需要关注的30个小技巧
  17. 爬虫案例 --- Python 爬取淘宝数据存到数据库
  18. 全网最全的唐诗,让你了解唐诗。让你明白唐诗皎洁的月光洒到床前,迷离中疑是秋霜一片。仰头观看明月呵明月,低头乡思连翩呵连翩。国破山河在,城春草木深。感时花溅泪,恨别鸟惊心。烽火连三月,家书抵万金。白头搔
  19. 搞了一上午,下午终于解决了ora-00119和ora-00132(亲测有效,超详细)
  20. 红米note4高配版 电量用完,充不进去电,解决办法

热门文章

  1. 小样本学习 | Learning to Compare: Relation Network for Few-Shot Learning
  2. mysql 实现按首字母字典序排序以及根据字段汉字首字母搜索
  3. java string isempty,java – String.isEmpty()和String.equals(“”)之间的区别
  4. Python + Django 如何支撑了 7 亿月活用户的 Instagram?
  5. 第四范式荣获“工业和信息化系统抗击新冠肺炎疫情先进集体”称号
  6. tensorflow随笔-随机数
  7. 【机器学习】详解 BackPropagation 反向传播算法!
  8. 温州大学《机器学习》课程课件(七、决策树)
  9. 一文通俗了解对抗生成网络(GAN)核心思想
  10. spark性能优化 -- spark工作原理