Kod:
public readonly List<DateTime> FutureEndDates = new List<DateTime>
{
new DateTime(2007, 06, 29, 16, 40, 0),
new DateTime(2007, 08, 31, 16, 40, 0),
new DateTime(2007, 10, 31, 17, 10, 0),
new DateTime(2007, 12, 31, 17, 10, 0),
new DateTime(2008, 02, 29, 17, 10, 0),
new DateTime(2008, 04, 30, 17, 10, 0),
new DateTime(2008, 06, 30, 17, 10, 0),
new DateTime(2008, 08, 29, 17, 10, 0),
new DateTime(2008, 10, 31, 17, 15, 0),
new DateTime(2008, 12, 31, 17, 15, 0),
new DateTime(2009, 02, 27, 17, 15, 0),
new DateTime(2009, 04, 30, 17, 15, 0),
new DateTime(2009, 06, 30, 17, 15, 0),
new DateTime(2009, 08, 31, 17, 15, 0),
new DateTime(2009, 10, 30, 17, 35, 0),
new DateTime(2009, 12, 31, 17, 35, 0),
new DateTime(2010, 02, 26, 17, 35, 0),
new DateTime(2010, 04, 30, 17, 35, 0),
new DateTime(2010, 06, 30, 17, 35, 0),
new DateTime(2010, 08, 31, 17, 35, 0),
new DateTime(2010, 10, 27, 17, 35, 0),
new DateTime(2010, 12, 31, 17, 35, 0),
new DateTime(2011, 02, 28, 17, 35, 0),
new DateTime(2011, 04, 29, 17, 35, 0),
new DateTime(2011, 06, 30, 17, 35, 0),
new DateTime(2011, 08, 29, 12, 35, 0),
new DateTime(2011, 10, 31, 17, 35, 0),
new DateTime(2011, 12, 30, 17, 35, 0),
new DateTime(2012, 02, 29, 17, 35, 0),
new DateTime(2012, 04, 30, 17, 35, 0),
new DateTime(2012, 06, 29, 17, 35, 0),
new DateTime(2012, 08, 31, 17, 45, 0),
new DateTime(2012, 10, 31, 17, 45, 0),
new DateTime(2012, 12, 31, 17, 45, 0),
new DateTime(2013, 02, 28, 17, 45, 0),
new DateTime(2013, 04, 30, 17, 45, 0),
new DateTime(2013, 06, 28, 17, 45, 0),
new DateTime(2013, 08, 29, 17, 45, 0),
new DateTime(2013, 10, 31, 17, 45, 0),
new DateTime(2013, 12, 31, 17, 45, 0),
new DateTime(2014, 02, 28, 17, 45, 0),
new DateTime(2014, 04, 30, 17, 45, 0),
new DateTime(2014, 06, 30, 17, 45, 0),
new DateTime(2014, 08, 29, 17, 45, 0),
new DateTime(2014, 10, 31, 17, 45, 0),
new DateTime(2014, 12, 31, 17, 45, 0),
new DateTime(2015, 02, 27, 17, 45, 0),
new DateTime(2015, 04, 30, 17, 45, 0),
new DateTime(2015, 06, 30, 17, 45, 0),
new DateTime(2015, 08, 31, 17, 45, 0),
new DateTime(2015, 10, 30, 17, 45, 0),
new DateTime(2015, 12, 31, 17, 45, 0),
new DateTime(2016, 02, 29, 17, 45, 0),
new DateTime(2016, 04, 29, 17, 45, 0),
new DateTime(2016, 06, 30, 17, 45, 0),
new DateTime(2016, 08, 31, 17, 45, 0),
new DateTime(2016, 10, 31, 17, 45, 0),
new DateTime(2016, 12, 30, 18, 15, 0),
new DateTime(2017, 02, 28, 18, 15, 0),
new DateTime(2017, 04, 28, 18, 15, 0),
new DateTime(2017, 06, 30, 18, 15, 0),
new DateTime(2017, 08, 29, 18, 15, 0),
new DateTime(2017, 10, 31, 18, 15, 0),
new DateTime(2017, 12, 29, 18, 15, 0),
new DateTime(2018, 02, 28, 18, 15, 0),
new DateTime(2018, 04, 30, 18, 15, 0),
new DateTime(2018, 06, 29, 18, 15, 0)
};
public bool FutureEnds(DateTime date, string period)
{
if (date.Month % 2 == 1 || date.Day < 23) return false;
var fed = FutureEndDates.Find(d => d.Date == date.Date);
if (fed == DateTime.MinValue) return false;
switch (period)
{
case "B": return date >= fed.AddSeconds(-30);
case "1": return date >= fed.AddMinutes(-2);
case "2": return date >= fed.AddMinutes(-4);
case "3": return date >= fed.AddMinutes(-6);
case "4": return date >= fed.AddMinutes(-8);
case "5": return date >= fed.AddMinutes(-10);
case "8": return date >= fed.AddMinutes(-20); // Gecmise yonelik hesaplaması zor oldugundan direk 20 cikardim.
case "10": return date >= fed.AddMinutes(-(fed.Minute % 10 == 0 ? 20 : fed.Minute % 10 + 10));
case "15": return date >= fed.AddMinutes(-(fed.Minute % 15 == 0 ? 30 : fed.Minute % 15 + 15));
case "20": return date >= fed.AddMinutes(-(fed.Minute % 20 == 0 ? 40 : fed.Minute % 20 + 20));
case "30": return date >= fed.AddMinutes(-(fed.Minute % 30 == 0 ? 60 : fed.Minute % 30 + 30));
case "60": return date >= fed.AddMinutes(-(fed.Minute % 60 == 0 ? 120 : fed.Minute % 60 + 60));
case "120": return date >= fed.AddMinutes(-(fed.Minute % 60 == 0 ? 240 : fed.Minute % 60 + 120));
case "240": return date.TimeOfDay >= TimeSpan.FromHours(12);
case "S": return date.TimeOfDay >= TimeSpan.FromHours(10);
case "G": return true;
case "H": return true; //date.Month % 2 == 0 && date.AddDays(7).Month % 2 != 0;
case "A": return true; // date.Month % 2 == 0;
}
return false;
}
Yukarıdaki kodu şu şekilde kullanıyorum:
Yer İmleri