我有开始日期和月数。我需要创建特定数量的月度期间,例如:
var startingDate = new DateTime(2010,1,15);
var months = 3;
for (int i = 0; i < months; i++)
{
Console.WriteLine("{0} from {1} to {2}", i + 1, startingDate.AddMonths(i),
startingDate.AddMonths(i + 1).AddDays(-1));
}
OUTPUT:
1 from 2010-1-15 to 2010-2-14
2 from 2010-2-15 to 2010-3-14
3 from 2010-3-15 to 2010-4-14
在这种情况下,代码很简单,而且很有效。 但是当startDate是DateTime(2010,1,31)时,结果是:
OUTPUT:
1 from 2010-1-31 to 2010-2-27
2 from 2010-2-28 to 2010-3-30
3 from 2010-3-31 to 2010-4-29
这些时期是否正确?
答案 0 :(得分:1)
这些时期看起来很时髦,但它们是正确的。
如果您的期间从该月的最后一天开始,则会在下个月的倒数第二天结束。
答案 1 :(得分:1)
你可以选择他们是对还是错。这就是我的意思: 如果您在1月15日开始,您是在本月第一天之后的14天开始,还是在最后一天之前的16天开始?
它可能变得更加棘手。如果15日是星期二,那么你的期限是否定义为某个月的第3个星期二开始?
金融界有很多关于这方面的文献,因为日计数公约,工作日,滚动公约等可以在金融产品的定价和现金流量方面产生很大的不同。与之相关。