C # DateTime манипуляция - PullRequest
       1

C # DateTime манипуляция

1 голос
/ 07 апреля 2010

У меня есть список дат для события в следующем формате

13/04/2010 10:30:00
13/04/2010 13:30:00
14/04/2010 10:30:00
14/04/2010 13:30:00
15/04/2010 10:30:00
15/04/2010 13:30:00
16/04/2010 10:30:00
17/04/2010 11:00:00
17/04/2010 13:30:00
17/04/2010 15:30:00

Как мне вывести список, чтобы дата отображалась только один раз, а затем время для этой датыпоэтому приведенный выше список будет выглядеть примерно так:

13/04/2010 
10:30:00
13:30:00

14/04/2010 
10:30:00
13:30:00

15/04/2010 
10:30:00
13:30:00

16/04/2010 
10:30:00

17/04/2010 
11:00:00
13:30:00
15:30:00

Ответы [ 3 ]

11 голосов
/ 07 апреля 2010

Ну, я не знаю, какая сторона дисплея , но группировать легко, если вы используете .NET 3.5 +:

var groups = list.GroupBy(dateTime => dateTime.Date);

foreach (var group in groups)
{
    Console.WriteLine("{0}:", group.Key);
    foreach(var dateTime in group)
    {
        Console.WriteLine("  {0}", dateTime.TimeOfDay);
    }
}
0 голосов
/ 07 апреля 2010

Если у вас есть даты в чем-то вроде списка , вы можете сделать это:

DateTime dtTemp = DateTime.MinValue;
StringBuilder sb = new StringBuilder();
foreach(DateTime dt in MyDateList)
{
    if (dt == dtTemp) sb.AppendLine(dt.ToString("HH:mm:ss"));
    else
    {
        dtTemp = dt;
        sb.AppendLine();
        sb.AppendLine(dt.ToString("dd/MM/yyyy HH:mm:ss"));
    }
}
Console.WriteLine(sb.ToString().Trim());

Редактировать: Обрезать вывод, чтобы исключить пустую первую строку.

0 голосов
/ 07 апреля 2010
        List<DateTime> dateTimes = new List<DateTime>();
        Dictionary<string, List<string>> data = new Dictionary<string, List<string>>();
        foreach (DateTime t in dateTimes)
        {
            if (!data.ContainsKey(t.ToShortDateString()))
            {
                data.Add(t.ToShortDateString(), new List<string>());
            }

            data[t.ToShortDateString()].Add(t.ToShortTimeString());
        }

        foreach (string key in data.Keys)
            data[key].Sort();

        foreach (var pair in data)
        {
            Console.WriteLine(pair.Key);
            foreach (string time in pair.Value)
                Console.WriteLine(time);

            Console.WriteLine();
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...