【发布时间】:2017-07-14 15:30:38
【问题描述】:
我有一个带有日期的大型记录数据库。当用户选择 MTD 时,程序从今天开始计算每 7 天的记录数(不使用当月的周数,所以我不能使用 .Day 或 .GetWeekOfMonth)。现在它看起来像这样:
if (options.timeRange == "MTD")
{
if (x.close_dt.Value.Date < DateTime.Today.AddMonths(-1))
{
complete = true;
}
if (DateTime.Today.AddMonths(-1).Date <= x.close_dt.Value.Date && x.close_dt.Value.Date <= DateTime.Today)
{
if (DateTime.Today.AddDays(-6).Date <= x.close_dt.Value.Date && x.close_dt.Value.Date <= DateTime.Today.Date)
{
chartObj.weeks[0]++;
}
else if (DateTime.Today.AddDays(-13).Date <= x.close_dt.Value.Date && x.close_dt.Value.Date <= DateTime.Today.AddDays(-7).Date)
{
chartObj.weeks[1]++;
}
else if (DateTime.Today.AddDays(-20).Date <= x.close_dt.Value.Date && x.close_dt.Value.Date <= DateTime.Today.AddDays(-14).Date)
{
chartObj.weeks[2]++;
}
else if (DateTime.Today.AddDays(-27).Date <= x.close_dt.Value.Date && x.close_dt.Value.Date <= DateTime.Today.AddDays(-21).Date)
{
chartObj.weeks[3]++;
}
}
}
感谢您的帮助
【问题讨论】:
-
这个函数到底应该做什么?如果是 MTD,为什么要减去一个月?
-
@maccettura 这是在 foreach 循环中。 x 是当前记录,记录按日期降序排序。该函数计算每个“周”中的记录数。周是前 7 天的跨度。如果记录超过一个月,则 x.close_dt.Value.Date
-
我还是不明白你的要求。如果“周”被定义为从今天开始的前 7 天,那么我们什么时候停止计算“周”?假设今天是 7/11/17,前一周是 7/4-7/11,但前一周将下降到 6 月。那个“周”应该是部分的吗?是否应该进入六月才能完成“一周”?如果是这样,则更改 MTD(月至今)的含义。
-
另外,您上面的代码似乎假设一个月是 31 天。 30 个月呢?二月呢?
-
我意识到我没有正确使用 MTD。我应该说“前 4 周”。是的,它会持续到六月。最后的 28-31 if 是我正在尝试的其他东西的残余,所以我摆脱了它。
标签: c# asp.net asp.net-mvc visual-studio datetime