如何在c#月历中获得SelectStartDate和SelectEndDate之间的差异

本文关键字:SelectEndDate 之间 SelectStartDate 月历 | 更新日期: 2023-09-27 18:14:51

我正在尝试从c#的月日历中获取日期计数。我的代码像这样

leave.Amount = Convert.ToInt32((mclDateRange.SelectionEnd - mclDateRange.SelectionStart).TotalDays.ToString());

我得到了这样的错误

输入字符串格式不正确。

如何在c#月历中获得SelectStartDate和SelectEndDate之间的差异

时间跨度。TotalDays属性是double类型的,您可以获得像

这样的整数部分:
leave.Amount = (int) (mclDateRange.SelectionEnd - mclDateRange.SelectionStart).TotalDays;

考虑下面的例子:

double d = 123.22d;
int number = Convert.ToInt32(d.ToString());

将导致异常

Input string was not in a correct format.

所以在你的代码中,你可以省略调用ToString,它会很好,就像:

leave.Amount = 
    Convert.ToInt32(
      (mclDateRange.SelectionEnd - mclDateRange.SelectionStart).TotalDays);

下面是一个逐步区分两个datetime对象的示例。只要把它应用到你的代码

DateTime startDate = DateTime.Parse("01/01/2013");
DateTime endDate = DateTime.Parse("05/22/2013");
TimeSpan dateDiff = endDate.Subtract(startDate);
int dayDiff = dateDiff.Days;

如果您想将小数天数(如4天18小时)舍入到最接近的天数(在本例中为5天),则使用TotalDays属性并转换为Int。

这是我为datetimepicker所做的方式,希望它能工作到monthcalendar

DateTime dt;
DateTime Todate ,FromDate;
 Todate = DateTime.ParseExact(datetimepicker1.Value.Date.ToString("dd/MM/yyyy"), "dd/MM/yyyy", CultureInfo.InvariantCulture); 
            FromDate = DateTime.ParseExact(datetimepicker2.Value.Date.ToString("dd/MM/yyyy"), "dd/MM/yyyy", CultureInfo.InvariantCulture);

double datedifference = (Todate - FromDate).TotalDays;

然后可以像这样检查日期

if(datedifference <2)
{
something ..........
}