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