如何查找c#windows中的月份日历控件中两个选定日期之间的月份数?

时间:2018-02-19 12:46:01

标签: c# .net windows windows-applications

enter image description here如何在c#windows中查找月份日历控件中两个选定日期之间的月份数? 比我想用这些数据填充文本框'Total Month'。 我附上了下面的屏幕截图。

[![Windows Form][1]][1]

1 个答案:

答案 0 :(得分:1)

您的问题有点模糊,如果答案对您的需求有一定的准确性,请不要感到惊讶。

在您获得两个日期之间的月份之前,您在此处的第一个挑战是,您需要从两个日期开始。

在C#Winforms应用程序中,您可以双击Calendar控件,以便Visual Studio生成onDateChanged事件处理程序。

对每个日历控件执行双击,如下所示:

        private DateTime startDate;
        private void dateTimePicker1_ValueChanged(object sender, EventArgs e)
        {
            startDate = dateTimePicker1.Value;
        }

        private DateTime endDate;
        private void dateTimePicker2_ValueChanged(object sender, EventArgs e)
        {
            endDate = dateTimePicker2.Value;
        }

现在,一旦你有了两个日期,那么复杂的一点就会产生两点之间的实际月份计算。 简单的TimeSpan对象不提供对TotalMonths方法的访问,但是,如果您愿意,可以编写这样的扩展方法。

各种StackOverflow页面处理给定DateTimes之间的总月数的计算。 使用上面的代码获取两个日期,然后使用以下页面上的代码执行计算。

How can I calculate the numbers of month between two dates in C#

calculating the difference in months between two dates

我特别喜欢这个解决方案:

        public static int MonthDifference(this DateTime lValue, DateTime rValue)
        {
            return Math.Abs((lValue.Month - rValue.Month) + 12 * (lValue.Year - rValue.Year));
        }

你应该能够执行

int totalMonths = date1.MonthDifference(date2);