using System.Globalization;
public static void Main()
DateTime now = new DateTime(2025,2,10,5,0,1);
DateTime nextdate = new DateTime(2025,2,10,5,0,1);
int.TryParse("0", out int unit);
int.TryParse("0", out int interval);
int.TryParse("420", out int endmin);
int.TryParse("900", out int startmin);
int.TryParse("3", out int startday);
int.TryParse("5", out int periode);
nextdate = nextdate.AddSeconds(interval);
nextdate = nextdate.AddMinutes(interval);
nextdate = nextdate.AddHours(interval);
nextdate = nextdate.AddDays(interval);
nextdate = nextdate.AddDays(interval * 7);
nextdate = nextdate.AddMonths(interval);
nextdate = nextdate.AddMonths(interval * 3);
nextdate = nextdate.AddYears(interval);
nextdate = DateTime.MaxValue;
if (nextdate > now.Date.AddMinutes(endmin))
nextdate = now.Date.AddDays(1).AddMinutes(startmin);
int c = CultureInfo.InvariantCulture.Calendar.GetWeekOfYear(now, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday);
int nc = CultureInfo.InvariantCulture.Calendar.GetWeekOfYear(nextdate, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday);
int nday = (int)now.DayOfWeek;
nextdate = now.AddDays(7 - nday).AddDays(startday);
if (nextdate.Month > now.Month)
nextdate = nextdate.AddDays(startday).AddMinutes(startmin);
if ((int)((nextdate.Month + 2) / 3) > (int)((now.Month + 2) / 3))
int nmonth = ((int)(((now.Month + 2) / 3) + 1) * 3 - 2) % 12;
int nyear = DateTime.Now.Year;
if (nmonth == 1) nyear++;
nextdate = new DateTime(nyear,nmonth,startday).AddMinutes(startmin);
if (nextdate.Year > now.Year)
nextdate = nextdate.AddYears(1).AddDays(startday).AddMinutes(startmin);
nextdate = DateTime.MaxValue;
Console.WriteLine(nextdate);