如何在C#中的monthcalendar上选择StartDate和Select EndDate之间的区别

时间:2013-05-22 06:52:09

标签: c#

我试图通过C#.my代码从月份日历中获取日期计数

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

我得到了这样的错误

  

输入字符串的格式不正确。

3 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:1)

以下是有关如何区分两个日期时间对象的分步示例。只需将其应用于您的代码

即可
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。

答案 2 :(得分:-2)

这是我为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 ..........
}