Несколько различий даты // C # - PullRequest
0 голосов
/ 11 ноября 2011

Как рассчитать разницу в нескольких датах, например

startDate1=("dd-MM-yy") 20-08-2011 
endDate1=25-08-11 

другое

startdate2=27-08-2011 
endDate2=30-08-2011 

так, чтобы вывод составил

(endDate1-startDate1)+(endDate2-StartDate2) == 8days //only in terms of days

Ответы [ 6 ]

2 голосов
/ 11 ноября 2011

Date - или + Date вернет TimeSpan, у него есть свойство с именем «Days» - это то, что вам нужно.

((endDate1-startDate)+(endDate2-StartDate2)).Days
2 голосов
/ 11 ноября 2011

Используйте TimeSpan для расчета разницы дат. Например:

TimeSpan ts = Date1 - Date2; 
int numberOfDays = ts.Days; 

Более подробную информацию можно найти здесь

0 голосов
/ 06 мая 2013

Если вам нужна точная функция DateDiff, как она работает в SQL, вы можете удалить метку времени переменных Date и затем вычесть одну из другой. Это даст вам точное количество дней. Ex.

DateTime dt = DateTime.Parse(fromDate.ToShortDateString()); 
DateTime dt1 = DateTime.Parse(toDate.ToShortDateString()); 
int noOfDays = dt.Subtract(dt1).TotalDays;
0 голосов
/ 14 ноября 2011

Полный код / ​​ответ ....

public class DateController : Controller
{

  public ActionResult date()
    {
        int allDiff;
        List<int> list=new List<int>();
        int flag = 0;
        int conflict = 0;
        List<int> conf = new List<int>();
        conf.Add(0);
        int a = 0;

        DateTime[] startDate = new DateTime[3];
        startDate[0] = new DateTime(2011, 11, 5);
        startDate[1] = new DateTime(2011, 11,7);
        startDate[2] = new DateTime(2011, 11, 15);

        DateTime[] endDate = new DateTime[3];
        endDate[0] = new DateTime(2011, 11, 10);
        endDate[1] = new DateTime(2011, 11,12);
        endDate[2] = new DateTime(2011, 11, 20);


        DateTime Min= startDate.Min();
        DateTime Max = endDate.Max();

        TimeSpan span = Max - Min;
        int total = span.Days;
        ViewBag.globalTotal = total;


        foreach (DateTime e in endDate)
        {

            foreach (DateTime s in startDate)
            {
                if (s >= e)
                {
                    TimeSpan span1 = s - e;
                    allDiff = span1.Days;                    
                    list.Add(allDiff);
                    flag = 1;
                    conflict = 1;
                }
                else {
                    flag = 0;
                }

            }
            if((list.Count==1)&&(conflict==1)&&(list!=null)){
                 a = list[0];
                conf.Add(a);
            }


            if ((flag == 1)&&(list.Count>1))
            {
                int m = list.Min();
                ViewBag.dhiraj = m;
                total = total - m;
                list.Clear();
            }

        }
        int confl= conf.Min();
        total=total-confl;
        ViewBag.Total = total;

        return View();
    }

}

`

0 голосов
/ 11 ноября 2011

Попробуйте,

        DateTime strdate = Convert.ToDateTime("1/1/2011");
        DateTime enddate = Convert.ToDateTime("1/10/2011");

        DateTime strdate1 = Convert.ToDateTime("1/1/2011");
        DateTime enddate1 = Convert.ToDateTime("1/10/2011");

        int resultdays = (enddate.Subtract(strdate) + enddate1.Subtract(strdate1)).Days;
0 голосов
/ 11 ноября 2011

Попробуйте этот код: -

            DateTime d1 = StarDate
            DateTime d2 = EndDate;
            TimeSpan t1 = d2.Subtract(d1);
            days = t1.Days;
            hours = t1.Hours;
...