Я хочу рассчитать общее количество недель в текущем месяце. Начиная с воскресенья или понедельника. Можно ли сделать в QtКак рассчитать количество недель в месяц
ответ
Я бы сказал, эта проблема не является специфической для 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++;
}
Этот код не был полностью протестирован и не гарантирована на работу!
floor(Number of Days/7)
Использовать документацию QT. Этот метод может получить количество недель в году. http://qt-project.org/doc/qt-5.1/qtcore/qdate.html#weekNumber
Конкретизируя ответа xfakehopex, вот пример того, как использовать QDate::weekNumber, чтобы получить количество недель в месяц, включая те короче, чем через семь дней:
QDate dateCurrent = QDate::currentDate();
int year = dateCurrent.year(), month = dateCurrent.month(),
daysInMonth = dateCurrent.daysInMonth(), weeksInMonth;
weeksInMonth = QDate(year, month, daysInMonth).weekNumber() - QDate(year, month, 1).weekNumber() + 1;
@sijith Что значит * общее количество недель в текущем месяце *? Что такое INs и что такое OUT? – mosg