給定一個DateRange我需要返回與給定時間段重疊的Start和EndDates的列表。獲取重疊的開始日期和結束日期
什麼是最好的辦法呢?感謝您的時間提前。
static void Main(string[] args)
{
//Period 1stMarch to 20th April
var startDate = new DateTime(2011, 03, 1);
var endDate = new DateTime(2011, 4, 20);
List<BookedPeriod> bookedPeriods=new List<BookedPeriod>();
bookedPeriods.Add(new BookedPeriod {StartDate = new DateTime(2011, 02, 5), EndDate = new DateTime(2011, 3, 15)});
bookedPeriods.Add(new BookedPeriod { StartDate = new DateTime(2011, 03, 20), EndDate = new DateTime(2011, 4, 10) });
bookedPeriods.Add(new BookedPeriod { StartDate = new DateTime(2011, 04, 01), EndDate = new DateTime(2011, 4, 15) });
List<OverlappedPeriod> myOverllappedPeriods = GetOverllapedPeriods(startDate, endDate, bookedPeriods);
}
public static List<OverlappedPeriod>GetOverllapedPeriods(DateTime startDate,DateTime endDate,List<BookedPeriod>bookedPeriods)
{
List<OverlappedPeriod>overlappedPeriods=new List<OverlappedPeriod>();
// Given a DateRange I need to return a list of Start and EndDates that overlaps
//??how I do i
return overlappedPeriods;
}
}
public class BookedPeriod
{
public DateTime StartDate { get; set; }
public DateTime EndDate { get; set; }
}
public class OverlappedPeriod
{
public DateTime StartDate { get; set; }
public DateTime EndDate { get; set; }
}
EDITED
我已經決定在clarifing的希望編輯和幫助,因此誰也幫我。 我被重疊vs相交弄糊塗了。 情景可能有助於
我已預訂了認購,從01變爲3月11日至20日年4月11
我去度假的05間年2月3月11日至15日11
我需要去健身房拿到啓動並當我的訂閱是有效的結束日期,我也不會去健身房 結果,我應該得到的回覆是起始日期= 2011年3月1日結束日期= 2011年3月15
myAttempt: 靜態無效的主要() { //節假日期間 var startDate = new DateTime(2011,02,5); var endDate = new DateTime(2011,3,15);
List<BookedPeriod> bookedPeriods = new List<BookedPeriod>();
bookedPeriods.Add(new BookedPeriod { StartDate = new DateTime(2011, 02, 5), EndDate = new DateTime(2011, 4, 20) });
List<OverlappedPeriod> overlappedPeriods=new List<OverlappedPeriod>();
foreach (var bookedPeriod in bookedPeriods)
{
DateTime newStartDate = new DateTime();
DateTime newEndDate = new DateTime();
OverlappedPeriod overlappedPeriod=new OverlappedPeriod();
overlappedPeriod.StartDate = newStartDate;
overlappedPeriod.EndDate = newEndDate;
GetDateRange(bookedPeriod.StartDate, bookedPeriod.EndDate, out newStartDate, out newEndDate);
overlappedPeriods.Add(overlappedPeriod);
}
//do something with it
}
private static void GetDateRange(DateTime startDate,DateTime endDate,out DateTime newStartDate,out DateTime newEndDate)
{
/*
* I need to get the start and end date when my subscription is valid that I will NOT BE GOING TO THE GYM
The result I should get back is StartDate=1 March 2011 EndDate =15 March 2011
*/
}
非常感謝!!!!我需要得到兩個。我現在會放棄它 – user9969 2011-02-24 12:00:32
對不起。我只需要得到重疊期的開始日期和日期。我似乎得到了錯誤的結果,雖然 – user9969 2011-02-24 12:10:03
啊,我明白了。編輯我的答案。現在返回與指定範圍重疊的已預訂期間的部分。 – jevakallio 2011-02-24 12:20:01