如何计算一个月的周数

时间:2010-05-21 06:12:29

标签: qt qt4 qt-creator qt4dotnet

我想计算当月的总周数。从周日或周一开始。 是不是可以在Qt

中做

5 个答案:

答案 0 :(得分:3)

floor(Number of Days / 7)

答案 1 :(得分: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++;
}

此代码尚未经过全面测试,无法保证工作!

答案 2 :(得分:2)

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;

答案 3 :(得分:0)

有些月份有4周,而其他月份则有5周。Qt状态that

  

根据ISO 8601,星期从星期一开始,一年的第一个星期四始终在该年的第1周。大多数年份有52周,但有些有53周。

为此,我每月的第一个星期四是计算一个月中的周数的起点。下面的功能对我有用:

int myClass::weeksInMonth(QDate cdate)
{
    QDate sDte = QDate(cdate.year(),cdate.month(),1);
    QDate eDte = QDate(cdate.year(),cdate.month(),cdate.daysInMonth());
    int wks = 0;
     for(QDate stD = sDte; stD <= eDte; stD = stD.addDays(1)){
       if(stD.dayOfWeek() == Qt::Thursday)++wks;
     }
     return wks;
}

答案 4 :(得分:0)

这是一个包装PyQt5最佳答案的函数。但是,第01周的ISO 8601定义是公历年的第一个星期四。该解决方案将在某些年份的12月和1月产生负数个星期。.

def weeksInMonth(date: QDate):
    year = date.year(), month = date.month()
    daysInMonth = date.daysInMonth()
    return QDate(year, month, daysInMonth).weekNumber()[0] - QDate(year, month, 1).weekNumber()[0] + 1