我有以下代码:
Dictionary<DayOfWeek, List<TimeSpan>> Daily = new Dictionary<DayOfWeek, List<TimeSpan>>();
我的想法是,我可以在Daily字典中添加一天的时间。但是一份工作可以在同一天不止一次执行。
所以每日看起来像这样:
{ "Monday" : [{"Hour":10, "Minute": 15}, {"Hour": 8, "Minute":5}] }
现在我想获得下一个执行日期时间。
private void UpdateNextExecutionTime()
{
TimeSpan t = new TimeSpan(15, 15, 0);
DayOfWeek current = DateTime.Now.DayOfWeek;
DayOfWeek tmp = current;
TimeSpan time = new TimeSpan(DateTime.Now.Hour, DateTime.Now.Minute, DateTime.Now.Second);
int cur = (int)current;
for(int i = 0; i < 7; i++) {
if(Daily.ContainsKey((DayOfWeek)cur)) {
tmp = (DayOfWeek)cur;
/* stuck */
continue;
}
cur++;
if (cur >= 7)
cur = 0;
}
}
我设法在每日词典中获得了第一天(包括今天),但我仍然没有花时间。
我怎么能这样做?
答案 0 :(得分:0)
假设t
是您正在使用的时间作为您希望找到下一个执行时间的点,请将其置于“卡住”的位置(编辑;只是意识到您已更改为使用{列表中的{1}}:
TimeSpan
答案 1 :(得分:0)
您也可以在TimeSpan中度过一天,
以下是查找下一个日期的简单示例:
var schedule = new List<TimeSpan>{
new TimeSpan(0,16,30,0),
new TimeSpan(1,16,30,0),
new TimeSpan(5,16,30,0)
};
var monday = DateTime.Today.AddDays(-(int)DateTime.Today.DayOfWeek + 1);
var fromMonday = DateTime.Now - monday;
var next = schedule.OrderBy(t => t).FirstOrDefault(t => t > fromMonday);
Console.Write(monday + next - DateTime.Now);