欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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# 获取当前年份的周期及周期所在日期范围(推荐)

总结

以上所述是小编给大家介绍的c# 获取当前年份的周期及周期所在日期范围(推荐),希望对大家有所帮助

上一篇:

下一篇: