using System.Collections.Generic;
public static void Main()
var CurrentDate = DateTime.Now;
DateTime periodEndDate = CurrentDate.AddMonths(1).AddDays(-(CurrentDate.AddMonths(1).Day));
List<DateTime> periodEndDates = new List<DateTime>();
periodEndDates.Add(Convert.ToDateTime("2018-01-02T00:00:00"));
periodEndDates.Add(Convert.ToDateTime("2018-01-31T00:00:00"));
periodEndDates.Add(Convert.ToDateTime("2018-02-28T00:00:00"));
periodEndDates.Add(Convert.ToDateTime("2018-04-02T00:00:00"));
periodEndDates.Add(Convert.ToDateTime("2018-04-30T00:00:00"));
periodEndDates.Add(Convert.ToDateTime("2018-05-31T00:00:00"));
periodEndDates.Add(Convert.ToDateTime("2018-07-02T00:00:00"));
periodEndDates.Add(Convert.ToDateTime("2018-07-31T00:00:00"));
periodEndDates.Add(Convert.ToDateTime("2018-08-31T00:00:00"));
periodEndDates.Add(Convert.ToDateTime("2018-10-01T00:00:00"));
periodEndDates.Add(Convert.ToDateTime("2018-10-31T00:00:00"));
periodEndDates.Add(Convert.ToDateTime("2018-11-30T00:00:00"));
periodEndDates.Add(Convert.ToDateTime("2019-01-02T00:00:00"));
CurrentDate = Convert.ToDateTime("2018-11-01T00:00:00");
if (periodEndDates.Count > 0)
TimeZoneInfo pstZone = TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time");
CurrentDate = TimeZoneInfo.ConvertTimeFromUtc(CurrentDate, pstZone);
var tryDate = periodEndDates.OrderBy(d => d).FirstOrDefault(d => d.Date >= CurrentDate.Date);
var oldTryDate = periodEndDates.OrderBy(d => d).FirstOrDefault(d => d >= CurrentDate);
Console.WriteLine("tryDate -->" + tryDate);
Console.WriteLine("oldTryDate -->" + oldTryDate);
if (tryDate != DateTime.MinValue && tryDate != DateTime.MaxValue)