我有以下代码片段用于获取两个日期之间的各个日期:
DateTime[] output = Enumerable.Range(0, 1 + endDate.Subtract(startDate).Days)
.Select(offset => startDate.AddDays(offset))
.ToArray();
Run Code Online (Sandbox Code Playgroud)
但是,以下部分
endDate.Subtract(startDate).Days
Run Code Online (Sandbox Code Playgroud)
没有.Months返回日期范围内的月份.
例如,如果我提供2010年1月1日和2010年6月1日,我希望返回2010年1月1日,2010年2月1日,2010年3月1日,2010年4月1日,5/1/2010年和2010年6月1日.
有任何想法吗?
Las*_*olt 29
试试这个:
static IEnumerable<DateTime> monthsBetween(DateTime d0, DateTime d1)
{
return Enumerable.Range(0, (d1.Year - d0.Year) * 12 + (d1.Month - d0.Month + 1))
.Select(m => new DateTime(d0.Year, d0.Month, 1).AddMonths(m));
}
Run Code Online (Sandbox Code Playgroud)
这包括起始月份和结束月份.这会查找有多少个月,然后DateTime根据d0年份和月份创建新的月份.这意味着几个月就好了yyyy-MM-01.如果你想让它包括时间和日期d0,你可以替换new DateTime(d0.Year, d0.Month, 1).AddMonths(m)的d0.AddMonths(m).
我发现你需要一个数组,在这种情况下你只需要使用monthsBetween(..., ...).ToArray()或放入.ToArray()方法.
| 归档时间: |
|
| 查看次数: |
10280 次 |
| 最近记录: |