2010-05-21 4 views
2

Я хочу рассчитать общее количество недель в текущем месяце. Начиная с воскресенья или понедельника. Можно ли сделать в QtКак рассчитать количество недель в месяц

+0

@sijith Что значит * общее количество недель в текущем месяце *? Что такое INs и что такое OUT? – mosg

ответ

3

Я бы сказал, эта проблема не является специфической для 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++; 
} 

Этот код не был полностью протестирован и не гарантирована на работу!

0

Конкретизируя ответа 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;