C# 获取当前年份的周期及周期所在日期范围(推荐)
程序员文章站
2023-12-18 14:06:10
最近有一个项目要用到年份周期,用于数据统计图表展示使用,当中用到年份周期,以及年份周期所在的日期范围。当初设想通过已知数据来换算年份周期,经过搜索资料发现通过数据库sql语...
最近有一个项目要用到年份周期,用于数据统计图表展示使用,当中用到年份周期,以及年份周期所在的日期范围。当初设想通过已知数据来换算年份周期,经过搜索资料发现通过数据库sql语句来做,反而更加复杂。现在改变思路通过c#后台代码来算出两段日期范围中年份周期,在依据年份周期所对应的日期范围进行数据库查询进行统计。需要解决以下两个点问题,
第一点:依据日期查找所在年份的第几周;
第二点:依据年份所在的周期计算出周期所在的日期范围。
using system; using system.collections.generic; using system.globalization; using system.linq; using system.text; using system.threading.tasks; namespace consoleapplication6 { class program { static void main(string[] args) { gregoriancalendar gc = new gregoriancalendar(); int weekofyear = gc.getweekofyear(datetime.now, calendarweekrule.firstday, dayofweek.monday); console.writeline("当前第{0}周", weekofyear); datetime startdate, lastdate; for (int i = 1; i <= 53; i++) { getdaysofweeks(datetime.now.year, i, out startdate, out lastdate); console.writeline("第{0}周", i); console.writeline(startdate); console.writeline(lastdate); } console.readline(); } public static bool getdaysofweeks(int year, int index, out datetime first, out datetime last) { first = datetime.minvalue; last = datetime.minvalue; if (year < 1700 || year > 9999) { //"年份超限" return false; } if (index < 1 || index > 53) { //"周数错误" return false; } datetime startday = new datetime(year, 1, 1); //该年第一天 datetime endday = new datetime(year + 1, 1, 1).addmilliseconds(-1); int dayofweek = 0; if (convert.toint32(startday.dayofweek.tostring("d")) > 0) dayofweek = convert.toint32(startday.dayofweek.tostring("d")); //该年第一天为星期几 if (dayofweek == 0) { dayofweek = 7; } if (index == 1) { first = startday.adddays(7 - dayofweek - 6); if (dayofweek == 6) { last = first; } else { last = startday.adddays((7 - dayofweek)); } } else { first = startday.adddays((8 - dayofweek) + (index - 2) * 7); //index周的起始日期 last = first.adddays(6); //if (last > endday) //{ // last = endday; //} } if (first > endday) //startdayofweeks不在该年范围内 { //"输入周数大于本年最大周数"; return false; } return true; } } }
执行结果
总结
以上所述是小编给大家介绍的c# 获取当前年份的周期及周期所在日期范围(推荐),希望对大家有所帮助