📄 realtimeclock.h
字号:
////////////////////////////////////////////////////////
// 僼傽僀儖偺愢柧丗儕傾儖僞僀儉僋儘僢僋惂屼僪儊僀儞僿僢僟
////////////////////////////////////////////////////////
#ifndef __REAL_TIME_CLOCK_H
#define __REAL_TIME_CLOCK_H
#include <stdio.h>
#include "Typedef.h"
////////////////////////////////////////////////////////
// 僪儊僀儞 丗儕傾儖僞僀儉僋儘僢僋惂屼
// 僋儔僗偺愢柧丗擔晅僋儔僗
////////////////////////////////////////////////////////
class ClockDate
{
public:
UCHAR year; //擭
UCHAR month; //寧
UCHAR day; //擔
};
////////////////////////////////////////////////////////
// 僪儊僀儞 丗儕傾儖僞僀儉僋儘僢僋惂屼
// 僋儔僗偺愢柧丗帪崗僋儔僗
////////////////////////////////////////////////////////
class ClockTime
{
///////////////////////////////////////////////////
// 儊儞僶曄悢
///////////////////////////////////////////////////
public:
UCHAR hour; //帪
UCHAR minute; //暘
UCHAR second; //昩
///////////////////////////////////////////////////
// 儊僜僢僪
///////////////////////////////////////////////////
public:
// 僐儞僗僩儔僋僞
ClockTime( CHAR *defaultTime)
{
int hourWk, minuteWk, secondWk;
sscanf( defaultTime, "%2d:%2d:%2d", &hourWk, &minuteWk, &secondWk );
this->hour = hourWk;
this->minute = minuteWk;
this->second = secondWk;
};
ClockTime( )
{
this->hour = 0; //帪
this->minute = 0; //暘
this->second = 0; //昩
};
// 帪崗偺堷偒嶼丗answer = timeOrg - timeSub
ClockTime operator-( ClockTime & timeSub )
{
ClockTime ret = *this;
UCHAR carryMin = 0;
if( ret.second < timeSub.second )
{
ret.second += 60;
carryMin = 1;
}
ret.second -= timeSub.second;
UCHAR carryHou = 0;
if( ret.minute < ( timeSub.minute + carryMin ) )
{
ret.minute += 60;
carryHou = 1;
}
ret.minute -= ( timeSub.minute + carryMin );
if( ret.hour < ( timeSub.hour + carryHou ) ) ret.hour += 24;
ret.hour -= ( timeSub.hour + carryHou );
ret.hour %= 24;
return ret;
};
// 帪崗偺堷偒嶼丗timeOrg -= timeSub
ClockTime operator-=( ClockTime & timeSub )
{
*this = *this - timeSub;
return *this;
};
// 帪崗偺懌偟嶼丗answer = timeOrg + timeAdd
ClockTime operator+( ClockTime & timeAdd )
{
ClockTime ret = *this;
ret.second += timeAdd.second;
if( ret.second >= 60 )
{
++(ret.minute);
ret.second -= 60;
}
ret.minute += timeAdd.minute;
if( ret.minute >= 60 )
{
++(ret.hour);
ret.minute -= 60;
}
ret.hour += timeAdd.hour;
ret.hour %= 24;
return ret;
};
// 帪崗偺懌偟嶼丗timeOrg += timeAdd
ClockTime operator+=( ClockTime & timeAdd )
{
*this = *this + timeAdd;
return *this;
};
// 帪崗偺斾妑丗timeOrg < timeCmp
BOOL operator<( ClockTime & timeCmp )
{
BOOL ret = FALSE;
if( this->hour < timeCmp.hour )
{
ret = TRUE;
}
else if(( this->hour == timeCmp.hour ) &&
( this->minute < timeCmp.minute ))
{
ret = TRUE;
}
else if(( this->hour == timeCmp.hour ) &&
( this->minute == timeCmp.minute ) &&
( this->second < timeCmp.second ) )
{
ret = TRUE;
}
return ret;
};
// 帪崗偺斾妑丗timeOrg > timeCmp
BOOL operator>( ClockTime & timeCmp )
{
BOOL ret = FALSE;
if( this->hour > timeCmp.hour )
{
ret = TRUE;
}
else if(( this->hour == timeCmp.hour ) &&
( this->minute > timeCmp.minute ))
{
ret = TRUE;
}
else if(( this->hour == timeCmp.hour ) &&
( this->minute == timeCmp.minute ) &&
( this->second > timeCmp.second ) )
{
ret = TRUE;
}
return ret;
};
// 帪崗偺斾妑丗timeOrg == timeCmp
BOOL operator==( ClockTime & timeCmp )
{
BOOL ret = FALSE;
if( ( this->hour == timeCmp.hour ) &&
( this->minute == timeCmp.minute ) &&
( this->second == timeCmp.second ) )
{
ret = TRUE;
}
return ret;
};
// 帪崗偺庢傝弌偟
BOOL getTimeStr( CHAR * time )
{
sprintf(time, "%02d:%02d:%02d", this->hour,
this->minute,
this->second );
return TRUE;
};
};
// 僴乕僪僂僃傾偺帪崗
extern ClockDate __nowDate; // 擔晅
extern ClockTime __nowTime; // 帪崗
////////////////////////////////////////////////////////
// 僪儊僀儞 丗儕傾儖僞僀儉僋儘僢僋惂屼
// 僋儔僗偺愢柧丗帪崗娗棟僋儔僗
////////////////////////////////////////////////////////
class RealTimeClock
{
///////////////////////////////////////////////////////
// 僨乕僞儊儞僶乕
///////////////////////////////////////////////////////
protected:
///////////////////////////////////////////////////////
// 儊僜僢僪
///////////////////////////////////////////////////////
public:
//僐儞僗僩儔僋僞丄帪崗偺弶婜壔
RealTimeClock()
{
__nowDate.year = 3;
__nowDate.month = 10;
__nowDate.day = 25;
__nowTime.hour = 17;
__nowTime.minute = 0;
__nowTime.second = 0;
};
// 尰嵼帪崗傪庢摼偡傞
VOID getNowTime( ClockTime * time )
{
*time = __nowTime;
};
// 尰嵼擔晅傪庢摼偡傞
VOID getNowDate( ClockDate * date )
{
*date = __nowDate;
};
protected:
};
#endif //__REAL_TIME_CLOCK_H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -