📄 clock.cpp
字号:
#include "Clock.h"#include <time.h>#include <string.h>#include <stdlib.h>#include <stdio.h>C_Clock::C_Clock(){ }C_Clock::~C_Clock(){ }int C_Clock::DivisibleUnits( int x, int y, int z ) const{ int nDiv = (x-y)/z; nDiv = nDiv > 0 ? nDiv:-nDiv; int lower = x<y ? x : y; nDiv += (lower%z) ? 0 : 1; return nDiv;}int C_Clock::LeapYearsBetween( int x, int y ) const{ return DivisibleUnits(x,y,4) - DivisibleUnits(x,y,100) + DivisibleUnits(x,y,400);}int C_Clock::isLeapYear() const{ return LeapYearsBetween( year, year );}int C_Clock::GetDaysInMonth() const{ return GetDaysInMonth( mon );}int C_Clock::GetDaysInMonth( int i ) const{ int md[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; return (i==2 && isLeapYear()) ? 29 : md[i-1];}void C_Clock::IncSec( int sec_inc ){ if ( sec_inc < 0 ) { DecSec( -sec_inc ); return; } sec = sec + sec_inc; int m_inc = sec / 60; sec = sec % 60; if (m_inc) IncMin(m_inc);}void C_Clock::IncMin( int min_inc ){ if ( min_inc < 0 ) { DecMin( -min_inc ); return; } minute = minute + min_inc; int h_inc = minute / 60; minute = minute % 60; if (h_inc) IncHour(h_inc);}void C_Clock::IncHour( int hour_inc ){ if ( hour_inc < 0 ) { DecHour( -hour_inc ); return; } hour = hour + hour_inc; int d_inc = hour / 24; hour = hour % 24; if (d_inc) IncDay(d_inc);}void C_Clock::IncDay( int day_inc ){ if ( day_inc < 0 ) { DecDay( -day_inc ); return; } while (day_inc) { int dim = GetDaysInMonth(); int DaysLeftInMonth = dim - mday; if ( day_inc <= DaysLeftInMonth ) { mday = mday + day_inc; day_inc = 0; } else { day_inc -= DaysLeftInMonth; IncMonth(); mday = 0; } }}void C_Clock::IncMonth( int mon_inc ){ if ( mon_inc < 0 ) { DecMonth( -mon_inc ); return; } mon = mon + mon_inc; int y_inc = (mon-1) / 12; mon = (mon-1) % 12 + 1; if (y_inc) IncYear(y_inc);}void C_Clock::IncYear( int year_inc ){ if ( year_inc < 0 ) { DecYear( -year_inc ); return; } year = year + year_inc;}void C_Clock::DecSec( int sec_inc ){ if ( sec_inc < 0 ) { IncSec( -sec_inc ); return; } int m_inc = sec_inc / 60; sec_inc %= 60; if (sec_inc > sec) { m_inc++; sec_inc-=60; } sec = sec - sec_inc; if (m_inc) DecMin(m_inc);}void C_Clock::DecMin( int min_inc ){ if ( min_inc < 0 ) { IncMin( -min_inc ); return; } int h_inc = min_inc / 60; min_inc %= 60; if (min_inc > minute) { h_inc++; min_inc-=60; } minute = minute - min_inc; if (h_inc) DecHour(h_inc);}void C_Clock::DecHour( int hour_inc ){ if ( hour_inc < 0 ) { IncHour( -hour_inc ); return; } int d_inc = hour_inc / 24; hour_inc %= 24; if (hour_inc > hour) { d_inc++; hour_inc-=24; } hour = hour - hour_inc; if (d_inc) DecDay(d_inc);}void C_Clock::DecDay( int day_inc ){ if ( day_inc < 0 ) { IncDay( -day_inc ); return; } while (day_inc) { if ( day_inc < mday ) { mday = mday - day_inc; day_inc = 0; } else { DecMonth(); day_inc -= mday; mday = GetDaysInMonth(); } }}void C_Clock::DecMonth( int mon_inc ){ if ( mon_inc < 0 ) { IncMonth( -mon_inc ); return; } int y_inc = mon_inc / 12; mon_inc %= 12; if (mon_inc > mon - 1) { y_inc++; mon_inc-=12; } mon = mon - mon_inc; if (y_inc) DecYear(y_inc);}void C_Clock::DecYear( int year_inc ){ if ( year_inc < 0 ) { IncYear( -year_inc ); return; } year = year - year_inc;}char* C_Clock::Get(const char* sz, int nLength, bool bPlus, int hh2, int mi2){ char* p = (char*)sz; if(nLength != 10) { return ""; } char tmp[10]; tmp[2] = 0; memcpy(tmp, &sz[0], 2); year = atoi(tmp); memcpy(tmp, &sz[2], 2); mon = atoi(tmp); memcpy(tmp, &sz[4], 2); mday = atoi(tmp); memcpy(tmp, &sz[6], 2); hour = atoi(tmp); memcpy(tmp, &sz[8], 2); minute = atoi(tmp); sec = 0; _hour = hh2; _minute = mi2; if(bPlus) { if(_minute != 0) IncMin(_minute); if(_hour != 0) IncHour(_hour); } else { if(_minute != 0) DecMin(_minute); if(_hour != 0) DecHour(_hour); } snprintf(m_nFormatString, 20, "%02d%02d%02d%02d%02d", year, mon, mday, hour, minute); return m_nFormatString;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -