static string StartInserted;
static string EndInserted;
public static void Main()
CalculateDate(null,"12-19-2022");
CalculateDate(null,"12-18-2022");
CalculateDate(null,"11-19-2022");
CalculateDate("11-19-2022", "12-01-2022");
public static void CalculateDate(string sDate, string eDate)
SetConditionalDefaultsNew();
Console.WriteLine(">= " + StartInserted);
Console.WriteLine("< " + EndInserted);
public static void SetConditionalDefaultsNew()
DateTime? ToDateTimeOrNull(string dateString)
if (string.IsNullOrEmpty(dateString))
return DateTime.TryParse(dateString, out DateTime parsedDate) ? parsedDate : (DateTime?) null;
DateTime today = DateTime.Today;
DateTime? startDate = ToDateTimeOrNull(StartInserted);
DateTime? endDate = ToDateTimeOrNull(EndInserted);
switch (startDate, endDate)
startDate = endDate.Value.AddDays(-3);
case (var s, null) when s.HasValue:
endDate = startDate.Value.AddDays(3);
case (null, var e) when e.HasValue:
startDate = endDate.Value.AddDays(-3);
endDate = today.AddDays(1);
string outputDateFormat = "yyyy-MM-ddTHH:mm:ss.fffZ";
StartInserted = startDate.Value.ToString(outputDateFormat);
EndInserted = endDate.Value.ToString(outputDateFormat);
public static class StringExtensions
public static string ConvertToDate(this string value, int days = 0, string format = "yyyy-MM-ddTHH:mm:ss.fffZ")
return !DateTime.TryParse(value, out result) ? (string)null : result.AddDays((double)days).ToString(format);