如何在c#net中使用datatimepicker获取月份更改后的月份数

如何在c#net中使用datatimepicker获取月份更改后的月份数,c#,.net,datetimepicker,desktop-application,monthcalendar,C#,.net,Datetimepicker,Desktop Application,Monthcalendar,我有两个datetimepicker1和datetimepicker2。现在,datetimepicker1和datetimepicker2是注册日期,datetimepicker2是支付利息的日期 现在,我想使用datetimepicker来计算月份更改后的月份 为了理解清算,让我们举一个例子 datetimepicker1注册日期为2019年27月31日,用户已于2020年1月10日支付了利息,即datetimepicker2商店价值为2020年1月10日 现在我要取两个月的利息2019年2

我有两个datetimepicker1和datetimepicker2。现在,datetimepicker1和datetimepicker2是注册日期,datetimepicker2是支付利息的日期

现在,我想使用datetimepicker来计算月份更改后的月份

为了理解清算,让我们举一个例子 datetimepicker1注册日期为2019年27月31日,用户已于2020年1月10日支付了利息,即datetimepicker2商店价值为2020年1月10日

现在我要取两个月的利息2019年27月31日是12月,2020年10月是1月

那么如何在文本框中显示值2

这是我的试用码

textbox.Text = Convert.ToString(Convert.ToInt32((datetimepicker2.Value - datetimepicker1.Value).TotalDays) / 31);
现在根据这段代码,我将在datetimepicker2之后1个月内选择27/01/2020或更大的值,这是我不想要的


图中显示了日期的调试代码和格式。

我建议对月份名称及其订单号使用枚举结构,在切换情况下,即如果1月份注册的datetimepicker将返回1,与may相同,将返回5,则您可以在此处进行减法。。。希望你明白我的意思

您可以简单地使用来进行计算

此外,在计算月差时,不要在计算中随机添加31天。您可以检查模数值,如果大于零,则可以将+1添加到月份

 int month = TimeSpan.Days/31;
 if(TimeSpan.Days%31 >0 ) month +=1;

你的减法是向后的。应该是:datetimepicker2.Value-datetimepicker1。Value@jdweng对不起,我编辑了这个问题,请检查一下。这是什么日历,2019年27月31日?2019年27月31日在任何日历上都不是有效日期。利息是如何计算的?利息的计算因国家而异。在大多数国家,一年只有360个银行工作日(12个月平均分配)。为了得到月底,通常你会使用AddMonth,然后减去一天,这样你就不必计算一个月的天数。