您的位置:首页 > 其它

实现下一秒日期计算(简单的时钟)。

2017-06-03 12:51 393 查看
// NextSecond.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"

class NextSecond {
public:
NextSecond(void) {}
NextSecond(int year, int month, int day, int hour, int min, int sec) :
m_year(year), m_month(month), m_day(day), m_hour(hour), m_min(min), m_sec(sec) {}
void GetTime(void)	{
++m_sec;
if (m_sec > 59){
m_sec = 0;
++m_min;
if (m_min > 59){
m_min = 0;
++m_hour;
if (m_hour > 23){
m_hour = 0;
++m_day;
if (m_day > GetMaxDay(m_year, m_month)){
m_day = 1;
++m_month;
if (m_month > 12){
m_month = 1;
++m_year;
}
}
}
}
}
printf("\r%d-%02d-%02d %02d:%02d:%02d", m_year,m_month,m_day,m_hour,m_min,m_sec);
}

private:
int m_year;
int m_month;
int m_day;
int m_hour;
int m_min;
int m_sec;
bool IsRunYear(int year)
{
if ((!(year % 4) && (year % 100)) || !(year % 400))
{
return true;
}
return false;
}
int GetMaxDay(int year, int month)
{
if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12)
{
return 31;
}
if (month == 4 || month == 6 || month == 9 || month == 10 || month == 11)
{
return 30;
}
if (IsRunYear(year))
{
return 29;
}
return 28;
}
};

void * doit(void)
{
NextSecond t(2017, 5, 31, 19, 28, 41);
while (true)
{
t.GetTime();
Sleep(1000);
}

}

int main()
{
NextSecond t(2017, 12, 31, 23, 59, 51);
while (true)
{
t.GetTime();
Sleep(1000);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: