目的:
使用定时器(QTimer类)与进位计算实现具有日期显示功能的电子钟,通过界面可以修改日期和时间。不能使用Qt自带的日期和时间类(QDate、QDatetime、QTime等)进行设计。
简介:
输入一个初始时间,使用定时器根据时间日期的进位计算进行时间数据更新。主要考虑平年闰年问题,月份天数问题等。
效果:
![](https://i-blog.csdnimg.cn/blog_migrate/a932659a0d27ef4a5860aa2c79b68289.gif)
代码:
![](https://i-blog.csdnimg.cn/blog_migrate/7f68f408522baa9a1881f83fd9d1a9af.png)
//判断平年还是闰年
//参数year 是输入的年份 如果是平年就返回true,如果是闰年就返回false
bool MainForm::isCommonYear(int year)
{
//要判断某一年是不是闰年,一般方法是用4或400去除这一年的年份数,如果除得的商是整数而没有余数,那么这一年是闰年。
if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
{
//闰年
return false;
}
else
{
//平年
return true;
}
}
//判断这个月有多少天
//如果月份数对,年数 返回天数
int MainForm::howManyDayofTheMonth(int month,int year)
{
//先判断是平年还是闰年
//如果是平年,那么2月就是28天
if(isCommonYear(year))
{
//如果是2月
if(month == 2)
{
return 28;
}
if(month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12)
{
//如果是1 3 5 7 8 10 12 这几个月份,那就是31天
return 31;
}
//如果不是上面的月份,那就返回30天
return 30;
}
//如果是闰年
if(month == 2)
{
return 29;
}
if(month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12)
{
//如果是1 3 5 7 8 10 12 这几个月份,那就是31天
return 31;
}
//如果不是上面的月份,那就返回30天
return 30;
}
exe体验地址(百度网盘链接):
链接:https://pan.baidu.com/s/1lWv96yRTQmQfDFHDtQmxAg
提取码:2tlt
yue_xusy@163.com