我正在创建一个图书馆管理系统.
我已经使用时间戳来计算日期差异,并且在日期差异的帮助下,我也在计算罚款.
现在,此日期差异包括一周中的所有日期.但是对于图书馆应用程序,罚款只需在周内收取6天(周一至周六).
我无法做到这一点.
任何人都可以帮我完成这项任务吗?
提前致谢!!
Pau*_*ier 17
从本质上讲,您可以计算原始天数; 你需要找到从这个数字中减去的星期日数.您知道每7天是一个星期日,因此您可以将原始天数除以7,并从原始天数中减去该数字.现在你需要删除本周余下的星期日数量; 一个 MOD原料的天数会告诉你剩余的日子.要确定该跨度是否包含星期日,您必须知道第一天的星期几; 如果你定义星期一是0,星期二是1,星期三是3等,那么如果你把跨度开始的星期几的值加到原始数的mod(7)天数,如果数字是6或更高,你已经跨越了一个额外的星期日,并且应该从您的罚款号码中删除1天.
在伪代码中:
int fine;
int numdays = endDay - startDay;
fine = numdays - (numdays / 7);
int dayOfWeek = startDate.DayOfWeek;
if (dayOfWeek + (numdays % 7) > 6)
{
fine = fine - 1;
}
Run Code Online (Sandbox Code Playgroud)
这样做:
private int DaysLate(DateTime dueDate, DateTime returnDate)
{
var ts = returnDate - dueDate;
int dayCount = 0;
for (int i = 1; i <= ts.Days; i++)
{
if (dueDate.AddDays(i).DayOfWeek != DayOfWeek.Sunday)
dayCount++;
}
return dayCount;
}
Run Code Online (Sandbox Code Playgroud)