C# 基于日期的循环
我正在用c#编写一个应用程序,它需要每两到三个月执行一次代码,等等。根据添加项目的月份。例如,如果月份是二月,它将表示为一个int,值为2。因此,它需要在4月(4日)、6月(6日)等日期运行。我真的不知道如何执行此操作,任何帮助都将非常有用 这是我到目前为止得到的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
// 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
}