C# 基于一年中的一周的条件(周变化法)

C# 基于一年中的一周的条件(周变化法),c#,C#,我将部署一些每周更改的条件方法 例如,这是我的旧代码: DayOfWeek dow = DateTime.Now.DayOfWeek; switch (dow) { case DayOfWeek.Friday: ///Do something break; case DayOfWeek.Monday:

我将部署一些每周更改的条件方法

例如,这是我的旧代码:

DayOfWeek dow = DateTime.Now.DayOfWeek;

            switch (dow)
            {
                case DayOfWeek.Friday:
                ///Do something
                    break;
                case DayOfWeek.Monday:
                ///Do something
                    break;
                case DayOfWeek.Saturday:
                ///Do something
                    break;
                case DayOfWeek.Sunday:
                ///Do something
                    break;
                case DayOfWeek.Thursday:
                ///Do something
                    break;
                case DayOfWeek.Tuesday:
                ///Do something
                    break;
                case DayOfWeek.Wednesday:
                ///Do something
                    break;
            }
在上面的代码中,若用户每天调用我的url,它将得到基于那个天的特殊答案

现在我想再做一个这样的方法:

         Condition week 1
         {
          //function 1 
         }
         Condition Week 2
         {
          //function  2 
         }
         Condition Week 3
         {
          //function  3
         }
         Condition Week 4
         {
          //function  1
         }
         Condition Week 5
         {
          //function  2
         }
         ..........
正如你在第3周后看到的,我从开始到第6周开始运行/循环函数1,这将继续

直到年底和之后

我应该使用“Calendar.GetWeekOfYear”来实现这个目标吗

还是我应该使用这种方法

      DateTime myDT = DateTime.Now;
      GregorianCalendar myCal = new GregorianCalendar();
      if ((myCal.GetDayOfMonth(myDT) >= 1) && (myCal.GetDayOfMonth(myDT) < 8))
      {
       Function 1
      }
      else if ((myCal.GetDayOfMonth(myDT) >= 8) && (myCal.GetDayOfMonth(myDT) < 15))
      {
       Function 2 
      }
      else if ((myCal.GetDayOfMonth(myDT) >= 15) && (myCal.GetDayOfMonth(myDT) < 22))
      {
       Function 3
      }
      else if ((myCal.GetDayOfMonth(myDT) >= 22) && (myCal.GetDayOfMonth(myDT) < 31))
      {
       Function 1 
      }
DateTime myDT=DateTime.Now;
GregorianCalendar myCal=新的GregorianCalendar();
如果((myCal.GetDayOfMonth(myDT)>=1)和&(myCal.GetDayOfMonth(myDT)<8))
{
职能1
}
如果((myCal.GetDayOfMonth(myDT)>=8)和&(myCal.GetDayOfMonth(myDT)<15))
{
职能2
}
如果((myCal.GetDayOfMonth(myDT)>=15)和&(myCal.GetDayOfMonth(myDT)<22))
{
职能3
}
如果((myCal.GetDayOfMonth(myDT)>=22)和&(myCal.GetDayOfMonth(myDT)<31))
{
职能1
}

使用
GetWeekOfYear
。它给你一些很好的灵活性,如何定义第一周,以及一周的第一天应该是什么。这是文件

class Program
{
    static void Main(string[] args)
    {
        DateTimeFormatInfo dfi = DateTimeFormatInfo.CurrentInfo;
        Calendar calendar = dfi.Calendar;
        var week = calendar.GetWeekOfYear(DateTime.Now.AddDays(1), CalendarWeekRule.FirstDay, DayOfWeek.Sunday);

        Console.Write(week);
        Console.ReadLine();
    }
}

两种方法都试一下,看看哪一种适合你。@SonerGönül感谢你的回复。对于第一个“GetWeekOfYear”,我找不到任何解决方案。对于第二个,问题是在第31天之后,如果是新的月份,它将再次启动函数1,而不是函数2:(