C# 将指定日期设置为1分钟等于3个月

C# 将指定日期设置为1分钟等于3个月,c#,datetime,timer,C#,Datetime,Timer,使用C#,为什么这个计时器不工作?我希望能够设置一个日期(2013年1月1日),对于每一分钟等于三个月的时间扩展@dbaseman的评论,我认为您的部分问题可能在于您试图在事件侦听器中添加一个事件侦听器。试试这个: DateTime newDate = new DateTime(2013, 1, 1); private void timer1_Tick(object sender, EventArgs e) { timer1.Tick += new

使用C#,为什么这个计时器不工作?我希望能够设置一个日期(2013年1月1日),对于每一分钟等于三个月的时间

扩展@dbaseman的评论,我认为您的部分问题可能在于您试图在事件侦听器中添加一个事件侦听器。试试这个:

DateTime newDate = new DateTime(2013, 1, 1);  

    private void timer1_Tick(object sender, EventArgs e)  
    {  
        timer1.Tick += new EventHandler(timer1_Tick);  
         timer1.Interval = 60000;

         timer1.Enabled = true;
         timer1.Start();
         newDate.AddMonths(+3);
         lblDate.Text = newDate.ToString();
    }
或者如果你不喜欢Lambdas

DateTime newDate = new DateTime(2013, 1, 1);
timer1.Interval = 60000;  
timer1.Enabled = true;
timer1.Tick += (object sender, EventArgs e) =>{
     newDate = newDate.AddMonths(+3);
     lblDate.Text = newDate.ToString();
}
timer1.Start();

通过扩展@dbaseman的评论,我认为问题的一部分可能在于您试图在事件侦听器中添加一个事件侦听器。试试这个:

DateTime newDate = new DateTime(2013, 1, 1);  

    private void timer1_Tick(object sender, EventArgs e)  
    {  
        timer1.Tick += new EventHandler(timer1_Tick);  
         timer1.Interval = 60000;

         timer1.Enabled = true;
         timer1.Start();
         newDate.AddMonths(+3);
         lblDate.Text = newDate.ToString();
    }
或者如果你不喜欢Lambdas

DateTime newDate = new DateTime(2013, 1, 1);
timer1.Interval = 60000;  
timer1.Enabled = true;
timer1.Tick += (object sender, EventArgs e) =>{
     newDate = newDate.AddMonths(+3);
     lblDate.Text = newDate.ToString();
}
timer1.Start();

你的问题对我来说有点不清楚,但看起来你可能需要使用
newDate=newDate.AddMonths(+3)。记住,
DateTime
是不可变的,所以您不能更改它的值,您必须重新分配它。谢谢!它是有效的,但由于某种原因,它在第一个“周期”中增加了3个月,然后增加越来越多,最终开始增加几十年;你知道怎么回事吗?随着时间的推移,它增加的越来越多的原因是,每次勾选都会添加另一个事件处理程序。在第一个刻度上,日期增加了3个月,您添加了另一个处理程序。因此,在下一个滴答声中,它两次增加了3个月,并添加了另一个处理程序。因此,对于每个刻度,你最后加上N*3个月,其中N是计时器运行的分钟数。你的问题对我来说有点不清楚,但看起来你可能需要使用
newDate=newDate.AddMonths(+3)。记住,
DateTime
是不可变的,所以您不能更改它的值,您必须重新分配它。谢谢!它是有效的,但由于某种原因,它在第一个“周期”中增加了3个月,然后增加越来越多,最终开始增加几十年;你知道怎么回事吗?随着时间的推移,它增加的越来越多的原因是,每次勾选都会添加另一个事件处理程序。在第一个刻度上,日期增加了3个月,您添加了另一个处理程序。因此,在下一个滴答声中,它两次增加了3个月,并添加了另一个处理程序。因此,对于每个刻度,你最后加上N*3个月,其中N是计时器运行的分钟数。非常感谢,我使用了第二种方法,它似乎工作得很好:)非常感谢!我尝试了代码(第二种方法),出于某种原因,“timer.Interval”的更改不会导致3个月的添加速度发生变化,3个月的添加速度是一致的;你能帮个忙吗?你可能得停下来,然后再启动计时器。不过我该把它放在哪里呢?非常感谢,我使用了第二种方法,它似乎工作得很好:)非常感谢!我尝试了代码(第二种方法),出于某种原因,“timer.Interval”的更改不会导致3个月的添加速度发生变化,3个月的添加速度是一致的;你能帮个忙吗?你可能得停下来,然后再启动计时器。不过我该把它放在哪里呢?