C#WinForm - 根据以下条件更改日期基础。循环问题

时间:2015-10-26 15:15:38

标签: c# winforms

我使用下面的代码

创建贷款摊还表

逻辑是,当我有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循环是错误的。见下图... 请帮我解决这个问题。我已完成其他代码,但我遇到了这个问题。提前致谢!请在下面留下你的答案/评论。

1 个答案:

答案 0 :(得分:4)

您认为可以通过添加30天来向前移动一个月

  

fromDate = fromDate.AddDays(30); //每个循环增加30

情况并非如此,因为有些月份有28天,29天或31天。

改为使用DateTime.AddMonths(1)