public static bool FilterBills(Bill bill)
const int THRESHOLD_DAYS = 6;
if (bill.BillDebitDate==null)
var validDate = bill.BillDebitDate != null && bill.BillDebitDate.HasValue && bill.BillDebitDate.Value.Date.AddDays(+3) >= DateTime.Now.ToUniversalTime().Date;
var dayDifference = (bill.BillDebitDate.Value.Date.AddDays(+3) - DateTime.Now.ToUniversalTime().Date).TotalDays;
var validThreshold = dayDifference <= THRESHOLD_DAYS && dayDifference >= 0;
Console.WriteLine(bill.BillDebitDate.Value.Date+" Adding 3 days " + bill.BillDebitDate.Value.Date.AddDays(+3)+" "+validDate +" "+dayDifference+" "+validThreshold + " Result "+(validDate && validThreshold) +" After Condition "
+ (bill.BillDebitDate.HasValue && bill.BillDebitDate.Value.Date.AddDays(-3) < DateTime.Now.ToUniversalTime().Date ? "Late":"Upcoming"));
return validDate && validThreshold;
public static void Main()
Bill M4Todaybill = new Bill() {BillDebitDate = DateTime.Now.ToUniversalTime().Date.AddDays(-4)};
FilterBills(M4Todaybill);
Bill M3Todaybill = new Bill() {BillDebitDate = DateTime.Now.ToUniversalTime().Date.AddDays(-3)};
FilterBills(M3Todaybill);
Bill M2Todaybill = new Bill() {BillDebitDate = DateTime.Now.ToUniversalTime().Date.AddDays(-2)};
FilterBills(M2Todaybill);
Bill Todaybill = new Bill() {BillDebitDate = DateTime.Now.ToUniversalTime().Date};
Bill P3Todaybill = new Bill() {BillDebitDate = DateTime.Now.ToUniversalTime().Date.AddDays(3)};
FilterBills(P3Todaybill);
Bill P4Todaybill = new Bill() {BillDebitDate = DateTime.Now.ToUniversalTime().Date.AddDays(4)};
FilterBills(P4Todaybill);
public DateTime? BillDebitDate { get; set; }