Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 基于日期的循环_C#_Date_For Loop - Fatal编程技术网

C# 基于日期的循环

C# 基于日期的循环,c#,date,for-loop,C#,Date,For Loop,我正在用c#编写一个应用程序,它需要每两到三个月执行一次代码,等等。根据添加项目的月份。例如,如果月份是二月,它将表示为一个int,值为2。因此,它需要在4月(4日)、6月(6日)等日期运行。我真的不知道如何执行此操作,任何帮助都将非常有用 这是我到目前为止得到的 // month is febuary string month = monthAsInt(date); for(int w= month; month <= 12; w++) { w++; //thats not go

我正在用c#编写一个应用程序,它需要每两到三个月执行一次代码,等等。根据添加项目的月份。例如,如果月份是二月,它将表示为一个int,值为2。因此,它需要在4月(4日)、6月(6日)等日期运行。我真的不知道如何执行此操作,任何帮助都将非常有用

这是我到目前为止得到的

 // month is febuary
string month = monthAsInt(date);
for(int w= month; month <= 12; w++)
{
 w++;
  //thats not going to work if month is greater than 0
  if(?)
  {
   //execute
  }
}
//月份是二月
字符串month=monthAsInt(日期);

对于(int w=month;month,我建议不要发明用于执行操作的函数(因为有很多非琐碎的东西),只需将其传递到.NET库函数,如:


因此,在使用这些函数将日期移到所需的边缘之后,首先构造“开始”
DateTime
对象。

最优雅的解决方案是将
DateTime
对象存储在某处(例如,在文件:)中序列化和反序列化它,并在每次加载应用程序时将其与当前对象进行比较

int monthJump = 2;
int month = monthAsInt(date);
for(int w= month; w <= 12; w = w + monthJump){
    //Execute
}
应该是

int month = monthAsInt(date);

这可能有用。只需验证月差是否为2的倍数:

 DateTime dateAdded; // Your date
 DateTime currentDate = DateTime.Now;

 int dateAddedMonth = dateAdded.Month;
 int currentDateMonth = currentDate.Month;

 int difference = dateAddedMonth - currentDateMonth;
 if (difference % 2 == 0)
 {
    // Do your stuff
 }

你最好创建一个计时器并相应地设置时间间隔。使用for循环是对处理能力的巨大浪费。你为什么要将
w
增加两次?你的问题还不太清楚,没有人能真正给你一个正确的答案。这是不是在正确的轨道上startDate=startDate.AddMonths(interval);如果时间间隔是从给定日期开始需要转移到的月份数,则是。谢谢,这两种解决方案都很好。非常感谢:)此解决方案太死板了。我认为假设时间间隔总是偶数个月不是一个好主意。只需替换“if”子句中的“2”,使其每3、4、5、,。。月。不是吗?我想说的重点是这不是规则——规则是“从当前日期开始在X间隔后运行代码”,而不是“如果月份可以被X整除,则运行代码”。如果将
%2
设置为变量,当然可以这样实现,但是,对我来说,您失去了可读性。您是对的,使%2变为可值将解决此问题,但会丢失可读性。请发布最终代码以查看您是如何做到的:-)
 DateTime dateAdded; // Your date
 DateTime currentDate = DateTime.Now;

 int dateAddedMonth = dateAdded.Month;
 int currentDateMonth = currentDate.Month;

 int difference = dateAddedMonth - currentDateMonth;
 if (difference % 2 == 0)
 {
    // Do your stuff
 }