public static void Main()
string tdate = "20221021";
int year = tdate.Substring(0, 4).TryParseDate( DateTime.MaxValue.Year);
int month = tdate.Substring(4, 2).TryParseDate(12);
int day = tdate.Substring(6, 2).TryParseDate(31);
Console.WriteLine($"{year}-{month}-{day}");
public static class IntParsers
public static int TryParseDate(this string value, int maxValue)
int ret = int.Parse(value);
ret = ret > maxValue ? maxValue : ret;
public static DateTime TryParseToDate(int year, int month, int day)
return new DateTime(year, month, day);
return new DateTime(year, month, 30);
return new DateTime(year, month, 29);
return new DateTime(year, month, 28);