转:[C#]获取某年指定周的开始日期和结束日期的通用方法
来自:http://blog.csdn.net/vrhero/archive/2008/01/13/2042481.aspx
/// 获取一年中指定的一周的开始日期和结束日期。开始日期遵循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#]获取某年指定周的开始日期和结束日期的通用方法相关推荐
- java处理最后一周_Java获取某年某周的最后一天
package test; import java.text.SimpleDateFormat; import java.util.Calendar; /** * ClassName: LastDay ...
- java 一周的第一天_Java获取某年某周的第一天
Java获取某年某周的第一天 1.设计源代码 FirstDayOfWeek.java: /** * @Title:FirstDayOfWeek.java * @Package:com.you.free ...
- Java获取某年某周的第一天
Java获取某年某周的第一天 1.设计源码 FirstDayOfWeek.java: /*** @Title:FirstDayOfWeek.java* @Package:com.you.freemar ...
- php 计算指定年份的周总数与及第几周的开始日期和结束日期(从周一开始)
/** * 获取某年第几周的开始日期和结束日期 * @param int $year * @param int $week 第几周; */ public function weekday($year, ...
- c#日期转换周几_C#获取每个年,月,周的起始日期和结束日期的方法
这篇文章主要介绍了C#获取每个年,月,周的起始日期和结束日期的方法,涉及C#时间与日期基本操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下 本文实例讲述了C#获取每个年,月,周的起始日期和结束日期 ...
- js获取下月时间_js获取某周、某月、下月、某季度的开始日期、结束日期及判断日期第几周...
//格式化日期:yyyy-MM-dd function formatDate(date) { var myyear = date.getFullYear(); var mymonth = date.g ...
- oracle 获取每周五,Oracle获取周几以及每周对应得开始日期和结束日期
Oracle获取周几以及每周对应得开始日期和结束日期 --获取近一年周的开始日期和结束日期,从星期日开始 select '2014'||sunday.the_week,decode(sign(sund ...
- oracle根据日期显示星期几,Oracle获取周几以及每周对应得开始日期和结束日期
Oracle获取周几以及每周对应得开始日期和结束日期 --获取近一年周的开始日期和结束日期,从星期日开始 select '2014'||sunday.the_week,decode(sign(sund ...
- 返回指定月份的周列表 包含 周序号、开始日期、结束日期(不包含周末)
/*** 返回当前年月的周列表 包含 周序号.开始日期.结束日期(不包含周末)* @param year 年* @param month 月* @returns {Array} */function ...
最新文章
- 边城高级中学2021届高考成绩查询,湖南省花垣县边城高级中学2021届高三第二学期学科素养测试英语试题及答案.doc...
- 和远程ip_漏洞Microsoft Windows TCP/IP 远程执行代码漏洞威胁通告
- 备忘录同步android ios9,IOS备忘录
- opencv3 ubuntu安装脚本
- mysql库存先进先出_sql 先进先出 库存
- extmail集群的邮件负载均衡方案 [lvs dns postfix]
- 深入理解浏览器解析和执行过程
- Adams中的阻尼比样条设置
- eclipse热部署_Spring Boot Devtools热部署
- spring管理的类如何调用非spring管理的类
- 对Javascript局部变量的理解
- 原生态mysql_MySQL 原生操作-速查
- Springboot 跨域配置
- [健康]生病了绝对不能吃的东西
- 天才黑客,阿里安全科学家吴翰清:做对事只能赢一场,跟对人可以赢一生
- 关于数据可视化图表的制作,你需要关注的30个小技巧
- 爬虫案例 --- Python 爬取淘宝数据存到数据库
- 全网最全的唐诗,让你了解唐诗。让你明白唐诗皎洁的月光洒到床前,迷离中疑是秋霜一片。仰头观看明月呵明月,低头乡思连翩呵连翩。国破山河在,城春草木深。感时花溅泪,恨别鸟惊心。烽火连三月,家书抵万金。白头搔
- 搞了一上午,下午终于解决了ora-00119和ora-00132(亲测有效,超详细)
- 红米note4高配版 电量用完,充不进去电,解决办法
热门文章
- 小样本学习 | Learning to Compare: Relation Network for Few-Shot Learning
- mysql 实现按首字母字典序排序以及根据字段汉字首字母搜索
- java string isempty,java – String.isEmpty()和String.equals(“”)之间的区别
- Python + Django 如何支撑了 7 亿月活用户的 Instagram?
- 第四范式荣获“工业和信息化系统抗击新冠肺炎疫情先进集体”称号
- tensorflow随笔-随机数
- 【机器学习】详解 BackPropagation 反向传播算法!
- 温州大学《机器学习》课程课件(七、决策树)
- 一文通俗了解对抗生成网络(GAN)核心思想
- spark性能优化 -- spark工作原理