Разница в нескольких датах //C#

#c# #.net #c#-4.0

#c# #.net #c #-4.0

Вопрос:

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

 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
  

Ответ №1:

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

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

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

Ответ №2:

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

 ((endDate1-startDate) (endDate2-StartDate2)).Days
  

Комментарии:

1. что, если даты перекрываются, т.Е. s1 = 1 e1 = 10 s2 = 5 e2 = 11 необходимый вывод == 11

2. Временной интервал на самом деле — это количество миллисекунд, длительность времени. Это не будет перекрываться, результат может быть положительным или отрицательным.

Ответ №3:

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

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

Ответ №4:

Попробуйте это,

         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;
  

Ответ №5:

Завершите код / ответ….

 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)amp;amp;(conflict==1)amp;amp;(list!=null)){
                 a = list[0];
                conf.Add(a);
            }


            if ((flag == 1)amp;amp;(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();
    }

}
  

`

Ответ №6:

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

 DateTime dt = DateTime.Parse(fromDate.ToShortDateString()); 
DateTime dt1 = DateTime.Parse(toDate.ToShortDateString()); 
int noOfDays = dt.Subtract(dt1).TotalDays;