PHP Code:
using System;
using System.Collections.Generic;
using System.Linq;
namespace ideal
{
public class Lib
{
private const int FutureMinExpireDay = 24;
public readonly List<DateTime> FutureExpireDates = new List<DateTime>
{
new DateTime(2018, 10, 31, 18, 15, 0),
new DateTime(2018, 08, 31, 18, 15, 0),
new DateTime(2018, 06, 29, 18, 15, 0),
new DateTime(2018, 04, 30, 18, 15, 0),
new DateTime(2018, 02, 28, 18, 15, 0),
new DateTime(2017, 12, 29, 18, 15, 0),
new DateTime(2017, 10, 31, 18, 15, 0),
new DateTime(2017, 08, 29, 18, 15, 0),
new DateTime(2017, 06, 30, 18, 15, 0),
new DateTime(2017, 04, 28, 18, 15, 0),
new DateTime(2017, 02, 28, 18, 15, 0),
new DateTime(2016, 12, 30, 18, 15, 0),
new DateTime(2016, 10, 31, 17, 45, 0),
new DateTime(2016, 08, 31, 17, 45, 0),
new DateTime(2016, 06, 30, 17, 45, 0),
new DateTime(2016, 04, 29, 17, 45, 0),
new DateTime(2016, 02, 29, 17, 45, 0),
new DateTime(2015, 12, 31, 17, 45, 0),
new DateTime(2015, 10, 30, 17, 45, 0),
new DateTime(2015, 08, 31, 17, 45, 0),
new DateTime(2015, 06, 30, 17, 45, 0),
new DateTime(2015, 04, 30, 17, 45, 0),
new DateTime(2015, 02, 27, 17, 45, 0),
new DateTime(2014, 12, 31, 17, 45, 0),
new DateTime(2014, 10, 31, 17, 45, 0),
new DateTime(2014, 08, 29, 17, 45, 0),
new DateTime(2014, 06, 30, 17, 45, 0),
new DateTime(2014, 04, 30, 17, 45, 0),
new DateTime(2014, 02, 28, 17, 45, 0),
new DateTime(2013, 12, 31, 17, 45, 0),
new DateTime(2013, 10, 31, 17, 45, 0),
new DateTime(2013, 08, 29, 17, 45, 0),
new DateTime(2013, 06, 28, 17, 45, 0),
new DateTime(2013, 04, 30, 17, 45, 0),
new DateTime(2013, 02, 28, 17, 45, 0),
new DateTime(2012, 12, 31, 17, 45, 0),
new DateTime(2012, 10, 31, 17, 45, 0),
new DateTime(2012, 08, 31, 17, 45, 0),
new DateTime(2012, 06, 29, 17, 35, 0),
new DateTime(2012, 04, 30, 17, 35, 0),
new DateTime(2012, 02, 29, 17, 35, 0),
new DateTime(2011, 12, 30, 17, 35, 0),
new DateTime(2011, 10, 31, 17, 35, 0),
new DateTime(2011, 08, 29, 12, 35, 0),
new DateTime(2011, 06, 30, 17, 35, 0),
new DateTime(2011, 04, 29, 17, 35, 0),
new DateTime(2011, 02, 28, 17, 35, 0),
new DateTime(2010, 12, 31, 17, 35, 0),
new DateTime(2010, 10, 27, 17, 35, 0),
new DateTime(2010, 08, 31, 17, 35, 0),
new DateTime(2010, 06, 30, 17, 35, 0),
new DateTime(2010, 04, 30, 17, 35, 0),
new DateTime(2010, 02, 26, 17, 35, 0),
new DateTime(2009, 12, 31, 17, 35, 0),
new DateTime(2009, 10, 30, 17, 35, 0),
new DateTime(2009, 08, 31, 17, 15, 0),
new DateTime(2009, 06, 30, 17, 15, 0),
new DateTime(2009, 04, 30, 17, 15, 0),
new DateTime(2009, 02, 27, 17, 15, 0),
new DateTime(2008, 12, 31, 17, 15, 0),
new DateTime(2008, 10, 31, 17, 15, 0),
new DateTime(2008, 08, 29, 17, 10, 0),
new DateTime(2008, 06, 30, 17, 10, 0),
new DateTime(2008, 04, 30, 17, 10, 0),
new DateTime(2008, 02, 29, 17, 10, 0),
new DateTime(2007, 12, 31, 17, 10, 0),
new DateTime(2007, 10, 31, 17, 10, 0),
new DateTime(2007, 08, 31, 16, 40, 0),
new DateTime(2007, 06, 29, 16, 40, 0)
};
public bool FutureExpires(DateTime date, string period)
{
if (FutureExpireDates == null || FutureExpireDates.Any() == false) return false;
if (date.Day < FutureMinExpireDay) return false;
var fed = DateTime.MinValue;
for (int i = 0; i < FutureExpireDates.Count; i++)
{
var expDate = FutureExpireDates[i];
if (date > expDate) break;
if (date.Date == expDate.Date) fed = expDate;
}
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 hesaplamasi zaman alacagindan 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;
}
return false;
}
}
}
Yer İmleri