代码之家  ›  专栏  ›  技术社区  ›  Rajeev_ranjan

如何从c#windows中的月历控件中查找两个选定日期之间的月数?[已关闭]

  •  -2
  • Rajeev_ranjan  · 技术社区  · 8 年前

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

    [![Windows Form][1]][1]
    
    1 回复  |  直到 8 年前
        1
  •  1
  •   Baaleos    8 年前

    你的问题有点模糊,所以如果答案有点符合你的需要,不要感到惊讶。

    在获得两个日期之间的月数之前,您面临的第一个挑战是,您需要先获得这两个日期。

    在C#Winforms应用程序中,您可以双击日历控件,以便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页面处理给定日期时间之间总月数的计算。 使用上述代码获取您的两个日期,然后使用以下页面上的代码执行计算。

    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);