2012-04-06 3 views
0

Я просто хочу получить общее количество дней в списке дат. Вот мой код, он возвращает 10 дней, он должен печатать 4 дня или около того.Получить общее количество дней в списке дат C#

static void Main(string[] args) 
{ 
    //Initializes new List of DataTime Object. 
    List<DateTime> Dates = new List<DateTime>(); 

    //Fills the List of DateTime Object. 
    for (int i = 0; i < 5; i++) 
    { 
     Dates.Add(DateTime.Now.AddDays(i)); 
     //Adds new DataTime Object in the list of DateTime Object. 
     Thread.Sleep(1000); //Stop filling dates for one second. 
    } 

    //Prints the List of DataTime Object. 
    for (int i = 0; i <5 ; i++) 
    { 
     Console.WriteLine(Dates[i]); 
    } 
    avgDate(Dates); 
} 

public static void avgDate(List<DateTime> Dates) { 
    long totalTicks = 0; 
    string avgticks = ""; 
    TimeSpan days = new TimeSpan(); 

    for (int i = 0; i < Dates.Count; i++) 
    { 
     for (int j = 1; j < Dates.Count; j++) 
     { 
      days += (Dates[j] - Dates[i]); 
     } 
    } 
    Console.WriteLine(days.TotalDays); 
    Console.ReadLine();` 
} 
+0

Если даты в списке непрерывно, не должны ли «общие дни» равняться длине списка? И если они не непрерывны, как вы определяете «полные дни»? Это '(MaxDate - MinDate) .TotalDays'? –

ответ

1

Поскольку у вас есть ваши даты в списке, почему бы не использовать некоторые функции linq?

days = Dates.Max() - Dates.Min(); 
Console.WriteLine(days.TotalDays); 

Я уверен, что дали < < B C,

(B - A) + (C - B) = C - A

+0

[ link] (http://stackoverflow.com/questions/10038771/get-total-days-in-a-list-of-dates-c-sharp), который работает с меньшим количеством кода, спасибо. – Overmachine

+1

, если это сработает для вас, вы можете отметить это как ответ :) – SouthShoreAK

1

Одной петли достаточно! EDIT: Я упростил еще больше.

public static void avgDate(List<DateTime> Dates) { 
    long totalTicks = 0; 
    string avgticks = ""; 
    TimeSpan days = new TimeSpan(); 

    for (int i = 1; i < Dates.Count; i++) 
    { 
     days += (Dates[i] - Dates[i-1]); 
    } 
    Console.WriteLine(days.TotalDays); 
    Console.ReadLine();` 
+0

[link] http://stackoverflow.com/questions/10038771/get-total-days-in-a-list-of-dates-c-sharp благодаря этому работает, но второй исключает цикл, спасибо – Overmachine

Смежные вопросы