📄 eroomtime.cpp
字号:
/*
// All Rights Reserved Copyright(c) 2000 Eroombox Telecom technology.
//==============================================================================
//EroomTime.cc: 矫埃包访 傍烹窃荐
//==============================================================================
*/
#include <stdio.h>
#include <string.h>
#include "EroomTime.h"
int uyear_days[] = {
0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366
};
int nyear_days[] = {
0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365
};
// 2岿捞 29老
int uyear_day[] = {
0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
};
// 2岿捞 28老
int nyear_day[] = {
0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
};
/*
//#_START_FUNCFORM==============================================================
//[name] CEroomTime::eCheckDateInterval
//[func] 矫埃厚背
//[call] CheckDateInterval( int a_OYear, int a_OMon, int a_ODay,
// int a_OHour, int a_OMin, int a_OSec,
// int a_CYear, int a_CMon, int a_CDay,
// int a_CHour, int a_CMin, int a_CSec)
//[io] int a_OYear:I:斥
// int a_OMon:岿
// int a_ODay:I:老
// int a_OHour:I:矫
// int a_OMin:I:盒
// int a_OSec:I:檬
// int a_CYear:I:斥
// int a_CMon:I:岿
// int a_CDay:I:老
// int a_CHour:I:矫
// int a_CMin:I:盒
// int a_CSec:I:檬
//[return] 0:EROOMEQU_TIME:矫埃捞 鞍澜
// 1:EROOMPRV_TIME:傈矫埃
// 2:EROOMAFT_TIME:饶矫埃
//
// 矫埃坷幅(1)
// -1:EROOMERR_YEAR:
// -2:EROOMERR_MON:
// -3:EROOMERR_DAY:
// -4:EROOMERR_HOUR:
// -5:EROOMERR_MIN:
// -6:EROOMERR_SEC:
// -7:EROOMERR_OTHER:
// 荤埃坷幅(2)
// -11:EROOMERR_YEAR:
// -12:EROOMERR_MON:
// -13:EROOMERR_DAY:
// -14:EROOMERR_HOUR:
// -15:EROOMERR_MIN:
// -16:EROOMERR_SEC:
// -17:EROOMERR_OTHER:
//[process] 瘤沥等 滴 矫埃阑 厚背茄促.
//[note]
//[history] 2000-10-12 累己
//#_END_FUNCFORM================================================================
*/
int
CEroomTime::CheckDateInterval(
int a_OYear, int a_OMon, int a_ODay,
int a_OHour, int a_OMin, int a_OSec,
int a_CYear, int a_CMon, int a_CDay,
int a_CHour, int a_CMin, int a_CSec)
{
int w_CheckDate;
w_CheckDate = CheckDate(a_OYear, a_OMon, a_ODay, a_OHour, a_OMin,
a_OSec);
if(w_CheckDate < 0) { //
return(w_CheckDate-10);
}
w_CheckDate = CheckDate(a_CYear, a_CMon, a_CDay, a_CHour, a_CMin,
a_CSec);
if(w_CheckDate < 0) { //
return(w_CheckDate);
}
if(a_OYear != EROOMTIME_NONE && a_CYear != EROOMTIME_NONE) {
if(a_OYear < a_CYear) {
return(EROOMAFT_TIME);
} else if(a_OYear > a_CYear) {
return(EROOMPRV_TIME);
}
}
if(a_OMon != EROOMTIME_NONE && a_CMon != EROOMTIME_NONE) {
if(a_OMon < a_CMon) {
return(EROOMAFT_TIME);
} else if(a_OMon > a_CMon) {
return(EROOMPRV_TIME);
}
}
if(a_ODay != EROOMTIME_NONE && a_CDay != EROOMTIME_NONE) {
if(a_ODay < a_CDay) {
return(EROOMAFT_TIME);
} else if(a_ODay > a_CDay) {
return(EROOMPRV_TIME);
}
}
if(a_OHour != EROOMTIME_NONE && a_CHour != EROOMTIME_NONE) {
if(a_OHour < a_CHour) {
return(EROOMAFT_TIME);
} else if(a_OHour > a_CHour) {
return(EROOMPRV_TIME);
}
}
if(a_OMin != EROOMTIME_NONE && a_CMin != EROOMTIME_NONE) {
if(a_OMin < a_CMin) {
return(EROOMAFT_TIME);
} else if(a_OMin > a_CMin) {
return(EROOMPRV_TIME);
}
}
if(a_OSec != EROOMTIME_NONE && a_CSec != EROOMTIME_NONE) {
if(a_OSec < a_CSec) {
return(EROOMAFT_TIME);
} else if(a_OSec > a_CSec) {
return(EROOMPRV_TIME);
}
}
return(EROOMEQU_TIME);
}
int CEroomTime::CheckDateInterval(int a_IntervalDate, int a_IntervalTime,
int a_Year, int a_Mon, int a_Day,
int a_Hour, int a_Min, int a_Sec)
{
int w_DYear, w_DMon, w_DDay, w_DHour, w_DMin, w_DSec;
GetIntervalTime(a_IntervalDate, a_IntervalTime,
w_DYear, w_DMon, w_DDay, w_DHour, w_DMin, w_DSec);
return(CheckDateInterval(
w_DYear, w_DMon, w_DDay, w_DHour, w_DMin, w_DSec,
a_Year, a_Mon, a_Day, a_Hour, a_Min, a_Sec));
}
/*
//#_START_FUNCFORM==============================================================
//[name] CEroomTime::CheckDate
//[func] 瘤沥矫埃 沥钦己 眉农
//[call] CheckDate(int a_Year, int a_Mon, int a_Day,
// int a_Hour, int a_Day, int a_Sec)
//[io] int a_Year:I:
// int a_Mon:I:
// int a_Day:I:
// int a_Hour:I:
// int a_Day:I:
// int a_Sec:I:
//[return] 0:沥惑
// -1:EROOMERR_YEAR:
// -2:EROOMERR_MON:
// -3:EROOMERR_DAY:
// -4:EROOMERR_HOUR:
// -5:EROOMERR_MIN:
// -6:EROOMERR_SEC:
// -7:EROOMERR:
//[process] 荤埃狼 沥钦己阑 眉农茄促.
//[note]
//[history] 2000-10-12 01-00-00 贸澜累己
//#_END_FUNCFORM================================================================
*/
int CEroomTime::CheckDate(int a_Year, int a_Mon, int a_Day,
int a_Hour, int a_Min, int a_Sec)
{
int w_DayMax;
if(a_Year != EROOMTIME_NONE) {
if(a_Year < EROOMYEAR_MIN || a_Year > EROOMYEAR_MAX) {
return(EROOMERR_YEAR);
}
}
if(a_Mon != EROOMTIME_NONE) {
if(a_Mon < EROOMMON_MIN || a_Mon > EROOMMON_MAX) {
return(EROOMERR_MON);
}
}
if(a_Day != EROOMTIME_NONE) {
if(a_Year != EROOMTIME_NONE && a_Mon != EROOMTIME_NONE) {
w_DayMax = EROOMMAXDAY_INMON(a_Year, a_Mon);
} else {
w_DayMax = EROOMDAY_MAX;
}
//
if(a_Day < EROOMDAY_MIN || a_Day > w_DayMax) {
return(EROOMERR_DAY);
}
}
if(a_Hour != EROOMTIME_NONE) {
if(a_Hour < EROOMHOUR_MIN || a_Hour > EROOMHOUR_MAX) {
return(EROOMERR_HOUR);
}
}
if(a_Min != EROOMTIME_NONE) {
if(a_Min < EROOMMIN_MIN || a_Min > EROOMMIN_MAX) {
return(EROOMERR_MIN);
}
}
if(a_Sec != EROOMTIME_NONE) {
if(a_Sec < EROOMSEC_MIN || a_Sec > EROOMSEC_MAX) {
return(EROOMERR_SEC);
}
}
return(EROOMTIME_VALID);
}
/*
//#_START_FUNCFORM==============================================================
//[name] CEroomTime::GetIntervalTime
//[func] INTERVAL 矫埃阑 备窃
//[call] void GetIntervalTime(int a_DDate, int a_DTime,
// int &a_CYear, int &a_CMon, int &a_CDay,
// int &a_CHour, int &a_CMin, int &a_CSec,
// int a_Year, int a_Mon, int a_Day,
// int a_Hour, int a_Min, int a_Sec)
//[io] int a_DDate:I:朝楼瘤沥 EROOMITV_YEAR荤侩 EROOMITV_YEAR(3)
// int a_DTime:I:矫埃瘤沥 EROOMITV_HOUR荤侩
// int a_CYear:I:
// int a_CMon:I:
// int a_CDay:I:
// int a_CHour:I:
// int a_CMin:I:
// int a_CSec:I:
// int a_Year:I:
// int a_Mon:I:
// int a_Day:I:
// int a_Hour:I:
// int a_Min:I:
// int a_Sec:I:
//[return] 绝澜
//[process]
//[note]
//[history]2000-10-15 01-00-00 贸澜累己
//#_END_FUNCFORM================================================================
*/
void CEroomTime::GetIntervalTime(int a_DDate, int a_DTime,
int &a_CYear, int &a_CMon, int &a_CDay,
int &a_CHour, int &a_CMin, int &a_CSec,
int a_Year, int a_Mon, int a_Day,
int a_Hour, int a_Min, int a_Sec)
{
int w_IYear, w_IMon, w_IDay, w_IHour, w_IMin, w_ISec;
int w_Carry;
int w_DayMax;
w_IYear = EROOMITV_GYEAR(a_DDate);
w_IMon = EROOMITV_GMON(a_DDate);
w_IDay = EROOMITV_GDAY(a_DDate);
w_IHour = EROOMITV_GHOUR(a_DTime);
w_IMin = EROOMITV_GMIN(a_DTime);
w_ISec =EROOMITV_GSEC(a_DTime);
a_CSec = w_ISec + a_Sec;
w_Carry = 0;
if(a_CSec < EROOMSEC_MIN) {
while(a_CSec < EROOMSEC_MIN) {
a_CSec += EROOMSEC_CMAX;
w_Carry -= 1;
}
} else if(a_CSec > EROOMSEC_MAX) {
while(a_CSec > EROOMSEC_MAX) {
a_CSec -= EROOMSEC_CMAX;
w_Carry += 1;
}
}
a_CMin = w_IMin + a_Min + w_Carry;
w_Carry = 0;
if(a_CMin < EROOMMIN_MIN) {
while(a_CMin < EROOMMIN_MIN) {
a_CMin += EROOMMIN_CMAX;
w_Carry -= 1;
}
} else if(a_CMin > EROOMMIN_MAX) {
while(a_CMin > EROOMMIN_MAX) {
a_CMin -= EROOMMIN_CMAX;
w_Carry += 1;
}
}
a_CHour = w_IHour + a_Hour + w_Carry;
w_Carry = 0;
if(a_CHour < EROOMHOUR_MIN) {
while(a_CHour < EROOMHOUR_MIN) {
a_CHour += EROOMHOUR_CMAX;
w_Carry -= 1;
}
} else if(a_CHour > EROOMHOUR_MAX) {
while(a_CHour > EROOMHOUR_MAX) {
a_CHour -= EROOMHOUR_CMAX;
w_Carry += 1;
}
}
a_CMon = w_IMon + a_Mon + w_Carry;
w_Carry = 0;
if(a_CMon < EROOMMON_MIN) {
while(a_CMon < EROOMMON_MIN) {
a_CMon += EROOMMON_CMAX;
w_Carry -= 1;
}
} else if(a_CMon > EROOMMON_MAX) {
while(a_CMon > EROOMMON_MAX) {
a_CMon -= EROOMMON_CMAX;
w_Carry += 1;
}
}
a_CYear = w_IYear + a_Year + w_Carry;
a_CDay = w_IDay + a_Day;
w_Carry = 0;
w_DayMax = EROOMMAXDAY_INMON(a_CYear, a_CMon);
if(a_CDay < EROOMDAY_MIN) {
while(a_CDay < EROOMDAY_MIN) {
a_CMon--;
if(a_CMon < EROOMMON_MIN) {
a_CMon += EROOMMON_MAX;
a_CYear--;
}
w_DayMax = EROOMMAXDAY_INMON(a_CYear, a_CMon);
a_CDay += w_DayMax;
}
} else if(a_CDay > w_DayMax) {
while(a_CDay > w_DayMax) {
a_CDay -= w_DayMax;
a_CMon++;
if(a_CMon < EROOMMON_MAX) {
a_CMon -= EROOMMON_MAX;
a_CYear++;
}
w_DayMax = EROOMMAXDAY_INMON(a_CYear, a_CMon);
}
}
}
void CEroomTime::GetIntervalTime(int a_DDate, int a_DTime,
int &a_CYear, int &a_CMon, int &a_CDay,
int &a_CHour, int &a_CMin, int &a_CSec)
{
int w_Year, w_Mon, w_Day, w_Hour, w_Min, w_Sec;
GetTime(w_Year, w_Mon, w_Day, w_Hour, w_Min, w_Sec);
GetIntervalTime(a_DDate, a_DTime,
a_CYear, a_CMon, a_CDay, a_CHour, a_CMin, a_CSec,
w_Year, w_Mon, w_Day, w_Hour, w_Min, w_Sec);
}
/*
//#_START_FUNCFORM==============================================================
//[name] CEroomTime::GetTime
//[func] 矫埃掘澜
//[call] void GetTime(
// int &a_Year, int &a_Mon, int &a_Day,
// int &a_Hour, int &a_Min, int &a_Sec)
//[io] int a_Year:O:
// int a_Mon:O:
// int a_Day:O:
// int a_Hour:O:
// int a_Min:O:
// int a_Sec:O:
//[return] 绝澜
//[process]
//[note]
//[history]2000-10-12 01-00-00 贸澜累己
//#_END_FUNCFORM================================================================
*/
void CEroomTime::GetTime(int &a_Year, int &a_Mon, int &a_Day,
int &a_Hour, int &a_Min, int &a_Sec)
{
struct tm *w_Tm;
w_Tm = GetTm();
a_Year = w_Tm->tm_year+1900;
a_Mon = w_Tm->tm_mon+1;
a_Day = w_Tm->tm_mday;
a_Hour = w_Tm->tm_hour;
a_Min = w_Tm->tm_min;
a_Sec = w_Tm->tm_sec;
}
/*
//#_START_FUNCFORM==============================================================
//[name] CEroomTime::GetTime
//[func] 矫埃掘澜
//[call] time_t GetTime()
//[io] 側偟
//[return] time_t:矫埃
//[process]
//[note]
//[history]2000-10-12 01-00-00 贸澜累己
//#_END_FUNCFORM================================================================
*/
time_t CEroomTime::GetTime()
{
time_t w_Time;
time(&w_Time);
return(w_Time);
}
/*
//#_START_FUNCFORM==============================================================
//[name] CEroomTime::EroomGetTm
//[func] 矫埃掘澜
//[call] struct tm* EroomGetTm()
//[io]
//[return] struct tm*:矫埃
//[process]
//[note] 側
//[history]2000-10-12 01-00-00 贸澜累己
//#_END_FUNCFORM================================================================
*/
struct tm *CEroomTime::GetTm()
{
time_t w_Time;
w_Time = GetTime();
return(localtime(&w_Time));
}
// 夸老阑 馆券
// 0-6(老-配)
int CEroomTime::GetDayOfWeek()
{
struct tm *w_Tm;
w_Tm = GetTm();
return(w_Tm->tm_wday);
}
/*
//#_START_FUNCFORM==============================================================
//[name] CEroomTime::GetTime
//[func] 矫埃掘澜
//[call] void GetTime(
// int &a_Year, int &a_Mon, int &a_Day,
// int &a_Hour, int &a_Min, int &a_Sec)
//[io] int a_Year:O:
// int a_Mon:O:
// int a_Day:O:
// int a_Hour:O:
// int a_Min:O:
// int a_Sec:O:
// int a_wDay:0: 夸老
//[return] 绝澜
//[process]
//[note]
//[history]2000-10-12 01-00-00 贸澜累己
//#_END_FUNCFORM================================================================
*/
void CEroomTime::GetTime(int &a_Year, int &a_Mon, int &a_Day,
int &a_Hour, int &a_Min, int &a_Sec, int &a_WDay)
{
struct tm *w_Tm;
w_Tm = GetTm();
a_Year = w_Tm->tm_year+1900;
a_Mon = w_Tm->tm_mon+1;
a_Day = w_Tm->tm_mday;
a_Hour = w_Tm->tm_hour;
a_Min = w_Tm->tm_min;
a_Sec = w_Tm->tm_sec;
a_WDay = w_Tm->tm_wday;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -