Được cung cấp danh sách phạm vi ngày, tôi muốn nhận danh sách các phạm vi ngày liền nhau.Nhận phạm vi ngày liền kề
Tôi không quá chắc chắn về các thuật ngữ của những gì tôi đang tìm kiếm, nhưng tôi đã đặt cùng một bộ xương:
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
namespace ContiguousTimeSpans
{
class Program
{
static void Main(string[] args)
{
List<DateRange> ranges = new List<DateRange>();
ranges.Add(new DateRange(DateTime.Parse("01/12/2015 07:00:00"), DateTime.Parse("01/12/2015 10:00:00")));
ranges.Add(new DateRange(DateTime.Parse("01/12/2015 06:00:00"), DateTime.Parse("01/12/2015 09:00:00")));
ranges.Add(new DateRange(DateTime.Parse("01/12/2015 05:00:00"), DateTime.Parse("01/12/2015 08:00:00")));
ranges.Add(new DateRange(DateTime.Parse("01/12/2015 18:00:00"), DateTime.Parse("01/12/2015 21:00:00")));
ranges.Add(new DateRange(DateTime.Parse("01/12/2015 12:00:00"), DateTime.Parse("01/12/2015 14:00:00")));
ranges.Add(new DateRange(DateTime.Parse("01/12/2015 20:00:00"), DateTime.Parse("01/12/2015 22:00:00")));
ranges.Add(new DateRange(DateTime.Parse("01/12/2015 11:00:00"), DateTime.Parse("01/12/2015 23:00:00")));
List<DateRange> contiguousBlocks = GetContiguousTimespans(ranges);
Debug.Assert(contiguousBlocks.Count == 2);
Debug.Assert(contiguousBlocks[0].Start.Hour == 5);
Debug.Assert(contiguousBlocks[0].End.Hour == 10);
Debug.Assert(contiguousBlocks[1].Start.Hour == 11);
Debug.Assert(contiguousBlocks[1].End.Hour == 23);
Console.ReadKey();
}
public static List<DateRange> GetContiguousTimespans(List<DateRange> ranges)
{
List<DateRange> result = new List<DateRange>();
//???
return result;
}
}
public class DateRange
{
public DateTime Start { get; set; }
public DateTime End { get; set; }
public DateRange(DateTime start, DateTime end)
{
Start = start;
End = end;
}
}
}
Có cách nào để suy ra tiếp giáp các dãy?
vì vậy câu hỏi của bạn là gì .. vấn đề và vấn đề với mã hiện tại của bạn là gì ..? điều gì sẽ xảy ra khi bạn chạy mã ..? – MethodMan
Xin chào MethodMan, tôi không biết thuật toán để triển khai trong GetContiguousTimespans(). Nỗ lực tôi đã làm là lộn xộn và tôi không muốn làm ô nhiễm bộ xương – Fidel
nó hoạt động được không ...? – MethodMan