// Параметры: дата от которой считать, кол-во месяцев
// Вернёт первую секунду итогового месяца или последнюю если считали в прошлое
int GetNextMonthStart(int unixtime, int months){
int add = (months < 0) ? -1 : 1; // позволяет считать в прошлое
int changed = 0; // счётчик изменившихся месяцев
int now = unixtime;
char before[16], after[16];
FormatTime(before, sizeof(before), "%m", now);
while (changed != months){
now += add;
FormatTime(after, sizeof(after), "%m", now);
// если месяц изменился, увеличить счётчик
if (!StrEqual(before, after, true)) {
before = after;
changed += add;
}
}
return now;
}