C# WPF 定时器 - 按周几和时间启动
要按照特定的时间和日期启动定时器,您可以使用以下代码:
// 定义一个计时器
System.Timers.Timer timer = new System.Timers.Timer();
// 设置计时器的时间间隔
timer.Interval = 1000;
// 设置计时器的启动时间
DateTime startTime = new DateTime(2021, 10, 1, 9, 0, 0);
// 设置计时器的启动日期为每周一
DayOfWeek startDay = DayOfWeek.Monday;
// 计算下一个启动时间
DateTime nextStartTime = NextWeekday(startTime, startDay);
// 计算下一个启动时间与当前时间的时间差
TimeSpan timeDifference = nextStartTime - DateTime.Now;
// 如果时间差为负数,则加上七天
if (timeDifference < TimeSpan.Zero)
{
timeDifference = timeDifference.Add(new TimeSpan(7, 0, 0, 0));
}
// 设置计时器的启动时间为下一个启动时间
timer.StartTime = nextStartTime;
// 启动计时器,并在下一个启动时间触发事件
timer.Elapsed += Timer_Elapsed;
timer.Start();
// 计算下一个启动时间的方法
public static DateTime NextWeekday(DateTime start, DayOfWeek day)
{
int daysToAdd = ((int)day - (int)start.DayOfWeek + 7) % 7;
return start.AddDays(daysToAdd);
}
// 定时器触发事件的方法
private void Timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
// 在此执行定时任务
}
在上面的代码中,您需要设置计时器的时间间隔、启动时间和启动日期。然后,使用NextWeekday方法计算下一个启动时间,并计算下一个启动时间与当前时间的时间差。最后,设置计时器的启动时间为下一个启动时间,并启动计时器。当计时器触发事件时,执行您的定时任务。
原文地址: https://www.cveoy.top/t/topic/oWHq 著作权归作者所有。请勿转载和采集!