qt c++ 实现每一天调用qDebug()<<"day";考虑闰年平年和大小月,输入的参数为某年某月某日到某年某月某日,并计算总的天数
时间: 2024-03-25 09:38:46 浏览: 17
好的,我可以基于之前的代码稍微修改一下,来实现从指定日期到指定日期的输出,并计算总的天数。下面是示例代码:
```c++
#include <QDebug>
#include <QDate>
int printDays(QDate startDate, QDate endDate)
{
int year = startDate.year(); // 获取开始日期的年份
int month = startDate.month(); // 获取开始日期的月份
int day = startDate.day(); // 获取开始日期的日份
int totalDays = 0; // 总天数
while (startDate <= endDate) // 循环遍历开始日期到结束日期
{
if (month == 2) // 2月份判断是否为闰年
{
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
{
if (day <= 29)
{
qDebug() << "day:" << startDate.toString("yyyy-MM-dd");
totalDays++;
}
}
else
{
if (day <= 28)
{
qDebug() << "day:" << startDate.toString("yyyy-MM-dd");
totalDays++;
}
}
}
else if (month == 4 || month == 6 || month == 9 || month == 11) // 小月份判断天数
{
if (day <= 30)
{
qDebug() << "day:" << startDate.toString("yyyy-MM-dd");
totalDays++;
}
}
else // 大月份判断天数
{
if (day <= 31)
{
qDebug() << "day:" << startDate.toString("yyyy-MM-dd");
totalDays++;
}
}
day++; // 天数加1
if (day > 31) // 处理下一个月的情况
{
month++;
day = 1;
}
if (month > 12) // 处理下一年的情况
{
year++;
month = 1;
}
startDate.setDate(year, month, day); // 更新日期
}
return totalDays;
}
int main()
{
QDate startDate(2022, 2, 1); // 开始日期
QDate endDate(2022, 3, 5); // 结束日期
int totalDays = printDays(startDate, endDate); // 调用函数输出每一天,并计算总天数
qDebug() << "total days:" << totalDays; // 输出总天数
return 0;
}
```
这个示例代码会在控制台输出从指定开始日期到指定结束日期的每一天,并计算总的天数。其中,闰年的判断方式与之前一样。小月份的天数是30天,大月份的天数是31天。在输出时,我使用了 `QDate` 类的 `toString()` 函数将日期格式化成 `yyyy-MM-dd` 的形式。
你可以根据自己的需求修改开始日期和结束日期,然后调用 `printDays()` 函数来输出每一天,并计算总的天数。函数返回值是总的天数。