Я бы сказал, что эта проблема не относится к Qt, но Qt может помочь вам с классом QDate
.
С этим классом вы можете получить текущий месяц:
QDate CurrentDate = QDate::currentDate();
Количество дней данного месяца:
CurrentDate.daysInMonth();
Для расчета количества недель это зависит от того, хотите ли вы указать количество полных недель в месяце или количество недель с учетом неполных недель.
Что касается последнего, вот как я бы это сделал (учитывая, что неделя начинается в понедельник):
const DAYS_IN_WEEK = 7;
QDate CurrentDate = QDate::currentDate();
int DaysInMonth = CurrentDate.daysInMonth();
QDate FirstDayOfMonth = CurrentDate;
FirstDayOfMonth.setDate(CurrentDate.year(), CurrentDate.month(), 1);
int WeekCount = DaysInMonth / DAYS_IN_WEEK;
int DaysLeft = DaysInMonth % DAYS_IN_WEEK;
if (DaysLeft > 0) {
WeekCount++;
// Check if the remaining days are split on two weeks
if (FirstDayOfMonth.dayOfWeek() + DaysLeft - 1 > DAYS_IN_WEEK)
WeekCount++;
}
Этот код не был полностью протестирован и не гарантированно работает!