我正在做一个日历页面来显示轮班工作的白天、晚上和休息日。
日程安排是这样的:7 天休息,4 晚休息,3 天休息,1 天休息,3 晚休息,3 天休息,4 天,然后 28 天的循环重新开始。周期总是从星期五开始。
有 4 个不同的工作人员:每个工作人员一个星期后开始。
所以我有一个 sql 表,其中只有第一个工作人员 7 休息的前 28 天周期的月、日和年,我将其吸进一个集合并添加字段来计算其他工作人员的起始 7 休息。
日历有不同的颜色来显示您的休息日、夜晚、白天。因此,我浏览了列表并将周期的第一天用作以下数组的索引:
static int[] DaysArray = new int[28] {0,0,0,0,0,0,0,2,2,2,2,0,0,0,1,1,1,0,2,2,2,0,0,0,1,1,1,1}; // 0 - day off, 1 - days, 2 - nights
我感兴趣的只是确定本月开始在 28 天周期的哪个时间点,我只是在剩下的日子里用适当的颜色着色。这是我正在努力解决的例程:
protected int GetDayNightOff(int day)
{
day--;
day -= 28;
day = Math.Abs(day);
day--;
return DaysArray[day];
}
如果周期的第一天落在 1 号,那么我想使用索引 0 显示起始颜色;第2位:索引27;第三:索引 26 等等。我知道有一个简单的解决方案,但我似乎无法理解它。
希望有人可以提供帮助,将不胜感激。