我使用下面的代码
创建贷款摊还表逻辑是,当我有1000的本金价值,10作为支付号码(给定,每个期限将乘以2,因此它将是20)和支付将削减1000至20个时间表。
decimal end_balance2 = 0;
var fromDate = date_from2.Value; // The sample date is 10/1/2015
decimal PV = 1000;
decimal TV = 10; // the loop will be x2 by the term value... so it will loop 20 instead
decimal PYMTS = 100;
String PV_string = Convert.ToString(PV);
decimal totalBalance = 0;
int count;
for (count = 0; count < TV; count++)
{
datagrid.Rows.Add(1);
int numrows = count + 1;
datagrid.Rows[count].Cells[1].Value = numrows;
datagrid.Rows[count].Cells[2].Value = PYMTS.ToString("##,###.00");
PV = PV - PYMTS;
if (fromDate.Day <= 5)
{
fromDate = new DateTime(fromDate.Year, fromDate.Month, 5);
}
else if (fromDate.Day <= 10)
{
fromDate = new DateTime(fromDate.Year, fromDate.Month, 10);
}
else if (fromDate.Day <= 15)
{
fromDate = new DateTime(fromDate.Year, fromDate.Month, 15);
}
else if (fromDate.Day <= 20)
{
fromDate = new DateTime(fromDate.Year, fromDate.Month, 20);
}
else if (fromDate.Day <= 25)
{
fromDate = new DateTime(fromDate.Year, fromDate.Month, 25);
}
else
{
fromDate = new DateTime(fromDate.Year, fromDate.Month, 30);
}
fromDate = fromDate.AddDays(30);// Increment by 30 for every loop
datagrid.Rows[count].Cells[0].Value = fromDate.ToShortDateString();
}
end_balance2 = datagrid.Rows[0].Cells[4].Value.ToString();
datagrid.Rows[0].Cells[3].Value = PV_string;
以下日期的逻辑是,当我选择日期时间选择器时,例如日期小于或等于5,它将仅显示固定为5的日期。与其他日子相同的做法。
问题是,我不知道为什么前10个循环上的日期是正确的,而第二个10循环是错误的。见下图...
请帮我解决这个问题。我已完成其他代码,但我遇到了这个问题。提前致谢!请在下面留下你的答案/评论。
答案 0 :(得分:4)
您认为可以通过添加30天来向前移动一个月
fromDate = fromDate.AddDays(30); //每个循环增加30
情况并非如此,因为有些月份有28天,29天或31天。