【发布时间】:2019-11-12 00:12:51
【问题描述】:
我有两个字段 startdate 和 enddate。我需要计算两个日期和时间字段之间有多少个周末,并以分钟为单位显示结果。
例如,开始日期为01/11/2019 00:00:00,结束日期为03/11/2019 11:00:00。下面的代码以2100 minutes 正确返回以分钟为单位的差异,但是当我将日期保留为02/11/2019 08:00 和03/11/2019 00:00 时,我得到的结果为1440,但我的预期结果是960 分钟。
我明白那是因为我在代码中添加了1440 那么如何更正呢?
public double CountOfWeekEnds(DateTime startDate, DateTime endDate)
{
double weekEndCount = 0;
if (startDate > endDate)
{
DateTime temp = startDate;
startDate = endDate;
endDate = temp;
}
TimeSpan diff = endDate - startDate;
int days = diff.Days;
for (var i = 0; i <= days; i++)
{
var testDate = startDate.AddDays(i);
if (testDate.DayOfWeek == DayOfWeek.Saturday || testDate.DayOfWeek == DayOfWeek.Sunday)
{
if (testDate.Date < endDate.Date)
{
weekEndCount += 1440; // 24h * 60 min
}
else
{
var todayStart = new DateTime(testDate.Year, testDate.Month, testDate.Day, 0, 0, 0);
var difference = (endDate - todayStart).TotalMinutes;
weekEndCount += difference;
}
}
}
return weekEndCount;
}
【问题讨论】:
-
嘿,说清楚一点。您想计算您的时间跨度内的周末分钟数吗?
-
是的,没错。谢谢诺西奥
-
好吧,如果不是第一天或最后一天,假设 24 小时,如果不是 sat 或 sun 添加 0 否则添加 max mins,然后根据指定的时间整理第一天和最后一天
-
@BugFinder - 您能否在代码中显示出来。谢谢
标签: c#