using System.Globalization;
public static void Main()
CalcStartDate( "12-01-2022", "11-18" );
CalcStartDate( "10-29-2022", "11-18" );
CalcStartDate( "10-11-2022", "10-01" );
CalcStartDate( "10-11-2023", "10-01" );
private static void CalcStartDate(string stringDateTimeNow, string stringStartDate)
DateTime datetimeNow = DateTime.Parse(stringDateTimeNow, CultureInfo.InvariantCulture);
DateTime startDate=DateTime.ParseExact(stringStartDate, "MM-dd", CultureInfo.InvariantCulture);
if (IsMonthDayLessThan( datetimeNow, startDate))
startDate = new DateTime( datetimeNow.Year - 1, startDate.Month, startDate.Day);
startDate = new DateTime( datetimeNow.Year, startDate.Month, startDate.Day);
Console.WriteLine("Now: " + stringDateTimeNow + " " + datetimeNow.ToString("MM/dd/yyyy HH:mm"));
Console.WriteLine("StartDate: " + stringStartDate + " " + startDate.ToString("MM/dd/yyyy HH:mm"));
private static bool IsMonthDayLessThan( DateTime timeSource, DateTime timeTarget)
return timeSource.Month < timeTarget.Month || (timeSource.Month == timeTarget.Month && timeSource.Day < timeTarget.Day);