我知道这个问题已经被问过很多次了,但我的有一个小小的转折。工作中有许多不同的班次,我有两个字符串shiftStart和shiftEnd。(例如分别为“6:00:00 PM”和“03:00:00 AM”)。这代表中午到早上。我正在尝试制作一个函数来告诉我 DateTime.Now 是否在此时间段内。
注意: 班次可以是任何时间……从早上到中午,从中午到早上,没有固定的持续时间(比如 8 小时)。
static bool NowWithinShiftTime("6:00:00 PM", "03:00:00 AM")
以下是我尝试过的,但无论我做什么,我似乎都找不到逻辑......请帮帮我......
static bool NowWithinShiftTime(string shiftStart, string shiftEnd)
{
DateTime startDate;
DateTime endDate;
DateTime now = DateTime.Now;
TimeSpan startTime = DateTime.Parse(shiftStart).TimeOfDay;
TimeSpan endTime = DateTime.Parse(shiftEnd).TimeOfDay;
if (startTime < endTime) // same day
{
startDate = new DateTime(now.Year, now.Month, now.Day) + startTime;
endDate = new DateTime(now.Year, now.Month, now.Day) + endTime;
}
else // next day
{
startDate = new DateTime(now.Year, now.Month, now.AddDays(-1).Hour) + startTime;
endDate = DateTime.Today.AddDays(1) + endTime;
}
if (now >= startDate && now <= endDate)
{
return true;
}
else
{
return false;
}
}