如何确定当前时间是否在c#中基于星期几的重复出现的时间范围内?

本文关键字:时间 于星期 范围内 何确定 是否 | 更新日期: 2023-09-27 18:13:12

不知道该如何处理。我有一个应用程序,用户可以选择一个时间范围(比如下午5点到上午10点),每天根据用户选择的日期(比如星期一、星期四和星期六)重复。如何确定当前时间是否在其中一个范围内?

编辑:

我看了看如果当前时间落在一个时间范围内,但我不认为这是一个重复,因为它没有解决我感到困惑的问题。例如,当一个时间范围落到了第二天时,我不确定该怎么办。就像我的例子,我如何处理下午5点到上午10点第二天?如果是下一周,比如从周六到周日(从6到0)呢?

更多信息:

我没有使用DateTime对象,我正在使用DaysOfWeek enum和Timespans来表示时间。下面是我将使用的范围的表示:

<>之前| startDay | startTime | endDay | endTime|----------|-----------|--------|-----------|| 1 | 17:00:00 | 2 | 09:00:00| 3 | 09:00:00 | 3 | 17:00:00 || 6 | 17:00:00 | 0 | 09:00:00 |

如何确定当前时间是否在c#中基于星期几的重复出现的时间范围内?

假设星期日是一周的开始:

var now = DateTime.Now;
// offset from "Sunday"
var i = now.Date.AddDays(-(double) now.DayOfWeek);
// normalize to this week
var s = i.AddDays((double) startDay).AddHours(startTime.TotalHours);
// normalize to this week
var e = i.AddDays((double)((endDay < startDay) ? endDay + 7 : endDay)).AddHours(endTime.TotalHours);
Debug.Assert(now >= s && now <= e);