📄 xdatetime.cpp
字号:
return m_LongTime <= CalcLongTime(aTime);
}
//operator>
bool XLongTime::operator>(XInt aLongTime) const
{
return m_LongTime > RoundTime(aLongTime);
}
bool XLongTime::operator>(const XLongTime & aLongTime) const
{
return m_LongTime > aLongTime.m_LongTime;
}
bool XLongTime::operator>(const XDateTime &aDateTime) const
{
return m_LongTime > CalcLongTime(aDateTime);
}
bool XLongTime::operator>(const TDateTime &aDateTime) const
{
return m_LongTime > CalcLongTime(aDateTime);
}
bool XLongTime::operator>(const XTime &aTime) const
{
return m_LongTime > CalcLongTime(aTime);
}
//operator<
bool XLongTime::operator<(const XLongTime & aLongTime) const
{
return m_LongTime < aLongTime.m_LongTime;
}
bool XLongTime::operator<(XInt aLongTime) const
{
return m_LongTime < RoundTime(aLongTime);
}
bool XLongTime::operator<(const XDateTime &aDateTime) const
{
return m_LongTime < CalcLongTime(aDateTime);
}
bool XLongTime::operator<(const TDateTime &aDateTime) const
{
return m_LongTime < CalcLongTime(aDateTime);
}
bool XLongTime::operator<(const XTime &aTime) const
{
return m_LongTime < CalcLongTime(aTime);
}
XLongTime::operator XTime() const
{
XTime aTime;
Decode(aTime);
return aTime;
}
XLongTime::operator TDateTime() const
{
int aHour,aMinute,aSecond,aMillis;
Decode(aHour,aMinute,aSecond,aMillis);
return TDateTime((XWord)aHour,(XWord)aMinute,(XWord)aSecond,(XWord)aMillis);
}
XLongTime::operator XDateTime() const
{
XDateTime tmp(*this);
return tmp;
}
void XLongTime::SetLongTime(int aHour,int aMinute,int aSecond,int aMillis)
{
m_LongTime = CalcLongTime( aHour, aMinute, aSecond, aMillis );
}
void XLongTime::SetLongTime(const XTime & aTime)
{
m_LongTime = CalcLongTime(aTime);
}
void XLongTime::SetLongTime(const XLongTime & aLongTime)
{
m_LongTime = aLongTime.m_LongTime;
}
void XLongTime::SetLongTime(const XDateTime & aDateTime)
{
m_LongTime = CalcLongTime(aDateTime);
}
void XLongTime::SetLongTime(const TDateTime & aDateTime)
{
m_LongTime = CalcLongTime(aDateTime);
}
void XLongTime::SetLongTime(const XInt & aLongTime)
{
m_LongTime = RoundTime( aLongTime );
}
void XLongTime::AddHour(int Hours)
{
m_LongTime = RoundTime( m_LongTime + Hours * MILLIS_PRE_HOUR );
}
void XLongTime::AddMinute(int Minutes)
{
m_LongTime = RoundTime( m_LongTime + Minutes * MILLIS_PRE_MINUTE );
}
void XLongTime::AddSecond(int Seconds)
{
m_LongTime = RoundTime( m_LongTime + Seconds * MILLIS_PRE_SECOND );
}
void XLongTime::AddMillis(int aMillis)
{
m_LongTime = RoundTime( m_LongTime + aMillis );
}
//method Sub...
void XLongTime::SubHour(int Hours)
{
AddHour(-Hours);
}
void XLongTime::SubMinute(int Minutes)
{
AddMinute( -Minutes );
}
void XLongTime::SubSecond(int Seconds)
{
AddSecond( -Seconds );
}
void XLongTime::SubMillis(int aMillis)
{
AddMillis( -aMillis );
}
XTime XLongTime::Decode() const
{
XTime aTime;
Decode( aTime );
return aTime;
}
void XLongTime::Decode(int & aHour,int & aMinute,int &aSecond,int &aMillis) const
{
XInt aTmp = m_LongTime;
aMillis = aTmp % 1000;
aTmp /= 1000;
aSecond = aTmp % 60;
aTmp /= 60;
aMinute = aTmp % 60;
aHour = aTmp / 60;
}
void XLongTime::Decode(XTime & aTime) const
{
XInt aTmp = m_LongTime;
aTime.SetMillis( aTmp % 1000 );
aTmp /= 1000;
aTime.SetSecond( aTmp % 60 );
aTmp /= 60;
aTime.SetMinute( aTmp % 60 );
aTime.SetHour( aTmp / 60 );
}
//---------------------------------------------------------------------------
XDateTime::XDateTime(XLong aDateTime)
:m_DateTime( RoundDateTime( aDateTime ) )
{
}
XDateTime::XDateTime()
:m_DateTime( CalcDateTime(Now()) )
{
}
XDateTime::XDateTime(const XDateTime & aDateTime)
:m_DateTime( aDateTime.m_DateTime )
{
}
XDateTime::XDateTime(const TDateTime & aDateTime)
:m_DateTime( CalcDateTime(aDateTime) )
{
}
XDateTime::XDateTime(const XLongDate & aLongDate,const XLongTime & aLongTime)
:m_DateTime( CalcDateTime( aLongDate ) + CalcDateTime(aLongTime) )
{
}
XDateTime::XDateTime(const XDate & aDate,const XTime & aTime)
:m_DateTime( CalcDateTime(aDate) + CalcDateTime(aTime) )
{
}
XDateTime::XDateTime(const XDate & aDate)
:m_DateTime( CalcDateTime( aDate ) )
{
}
XDateTime::XDateTime(const XLongDate & aLongDate)
:m_DateTime( CalcDateTime( aLongDate ) )
{
}
XDateTime::XDateTime(const XTime & aTime)
:m_DateTime( CalcDateTime( aTime ) )
{
}
XDateTime::XDateTime(const XLongTime & aLongTime)
:m_DateTime( CalcDateTime( aLongTime ) )
{
}
XDateTime::XDateTime(const XDate & aDate,const XLongTime & aLongTime)
:m_DateTime( CalcDateTime( aDate ) + CalcDateTime( aLongTime ) )
{
}
XDateTime::XDateTime(const XLongDate & aLongDate,const XTime & aTime)
:m_DateTime( CalcDateTime( aLongDate ) + CalcDateTime( aTime ) )
{
}
XDateTime::XDateTime(int aYear,int aMonth,int aDay,int aHour,int aMinute,int aSecond,int aMillis)
:m_DateTime( CalcDateTime(aYear,aMonth,aDay,aHour,aMinute,aSecond,aMillis) )
{
}
XDateTime::XDateTime(int aYear,int aMonth,int aDay)
:m_DateTime( CalcDateTime(aYear,aMonth,aDay) )
{
}
XDateTime::XDateTime(int aHour,int aMinute,int aSecond,int aMillis)
:m_DateTime( CalcDateTime( aHour,aMinute,aSecond,aMillis ) )
{
}
XLong XDateTime::RoundDateTime(XLong aDateTime)
{
XInt aLongDate = (XInt)(aDateTime / MAX_MILLIS_PRE_DAY64);
aLongDate = XLongDate::RoundDate( aLongDate );
return aLongDate * MAX_MILLIS_PRE_DAY64 + aDateTime % MAX_MILLIS_PRE_DAY64;
}
void XDateTime::DecodeTime( XTime & aTime ) const
{
XInt aTmp = (int)(m_DateTime % MAX_MILLIS_PRE_DAY64);
aTime.SetMillis( aTmp % 1000 );
aTmp /= 1000;
aTime.SetSecond( aTmp % 60 );
aTmp /= 60;
aTime.SetMinute( aTmp % 60 );
aTime.SetHour( aTmp / 60 );
}
void XDateTime::DecodeTime( int & aHour,int & aMinute, int & aSecond, int & aMillis ) const
{
XInt aTmp = (int)(m_DateTime % MAX_MILLIS_PRE_DAY64);
aMillis = aTmp % 1000;
aTmp /= 1000;
aSecond = aTmp % 60;
aTmp /= 60;
aMinute = aTmp % 60;
aHour = aTmp / 60;
}
XTime XDateTime::DecodeTime() const
{
XTime aTime;
DecodeTime( aTime );
return aTime;
}
XDate XDateTime::DecodeDate() const
{
XDate aDate;
DecodeDate( aDate );
return aDate;
}
void XDateTime::DecodeDate(XDate & aDate) const
{
int aYear,aMonth,aDay;
DecodeDate(aYear,aMonth,aDay);
aDate.SetDate( aYear,aMonth,aDay);
}
void XDateTime::DecodeDate(int &aYear,int &aMonth,int & aDay) const
{
int aDays = GetLongDate();
int N400 = aDays / 146097;
int D = aDays % 146097;
int N100 = D / 36524;
D = D % 36524;
int N4 = D / 1461;
D = D % 1461;
int N = D / 365;
D = D % 365;
int NYear = N400 * 400 + N100 * 100 + N4 * 4 + N;
int TDays = 0;
if( D > 0)
{
NYear ++;
aYear = NYear;
for(int i=1;i<13;i++)
{
TDays += GetMonthDays(NYear,i);
if( D <= TDays )
{
aMonth = i;
aDay = D - TDays + GetMonthDays(NYear,i);
break;
}
}
}
else
{
aYear = NYear;
aMonth = 12;
aDay = 31;
}
}
XLong XDateTime::CalcDateTime(const XDate & aDate)
{
return XLongDate::CalcLongDate(aDate) * MAX_MILLIS_PRE_DAY64;
}
XLong XDateTime::CalcDateTime(const XTime & aTime)
{
return XLongTime::CalcLongTime(aTime);
}
XLong XDateTime::CalcDateTime(const XLongDate & aLongDate)
{
return aLongDate.GetLongDate() * MAX_MILLIS_PRE_DAY64;
}
XLong XDateTime::CalcDateTime(const XLongTime & aLongTime)
{
return aLongTime.GetLongTime();
}
XLong XDateTime::CalcDateTime(const TDateTime & aDateTime)
{
return XLongDate::CalcLongDate(aDateTime) * MAX_MILLIS_PRE_DAY64 + XLongTime::CalcLongTime(aDateTime);
}
XLong XDateTime::CalcDateTime(int aYear,int aMonth,int aDay)
{
return XLongDate::CalcLongDate( aYear, aMonth, aDay ) * MAX_MILLIS_PRE_DAY64;
}
XLong XDateTime::CalcDateTime(int aHour,int aMinute,int aSecond,int aMillis)
{
return XLongTime::CalcLongTime( aHour, aMinute, aSecond, aMillis );
}
XLong XDateTime::CalcDateTime(int aYear,int aMonth,int aDay,int aHour,int aMinute,int aSecond,int aMillis)
{
return CalcDateTime(aYear,aMonth,aDay) + CalcDateTime(aHour,aMinute,aSecond,aMillis);
}
XDateTime & XDateTime::operator=(const XDateTime & aDateTime)
{
m_DateTime = aDateTime.m_DateTime;
return *this;
}
XDateTime & XDateTime::operator=(const TDateTime & aDateTime)
{
m_DateTime = CalcDateTime( aDateTime );
return *this;
}
XDateTime & XDateTime::operator=(const XLongDate & aLongDate)
{
m_DateTime = CalcDateTime( aLongDate );
return *this;
}
XDateTime & XDateTime::operator=(const XLong & aDateTime)
{
m_DateTime = RoundDateTime( aDateTime );
return *this;
}
XDateTime & XDateTime::operator=(const XLongTime & aLongTime)
{
m_DateTime = CalcDateTime ( aLongTime );
return *this;
}
XDateTime & XDateTime::operator=(const XDate & aDate)
{
m_DateTime = CalcDateTime( aDate );
return *this;
}
XDateTime & XDateTime::operator=(const XTime & aTime)
{
m_DateTime = CalcDateTime( aTime );
return *this;
}
XDateTime & XDateTime::operator++()
{
m_DateTime = RoundDateTime( m_DateTime + 1 );
return *this;
}
XDateTime & XDateTime::operator--()
{
m_DateTime = RoundDateTime( m_DateTime - 1 );
return *this;
}
XDateTime XDateTime::operator++(int)
{
XDateTime tmp(*this);
m_DateTime = RoundDateTime( m_DateTime + 1 );
return tmp;
}
XDateTime XDateTime::operator--(int)
{
XDateTime tmp(*this);
m_DateTime = RoundDateTime( m_DateTime - 1 );
return tmp;
}
void XDateTime::SetDateTime()
{
m_DateTime = CalcDateTime( Now() );
}
void XDateTime::SetDateTime(XLong aDateTime)
{
m_DateTime = RoundDateTime( aDateTime );
}
void XDateTime::SetDateTime(const XDateTime & aDateTime)
{
m_DateTime = aDateTime.m_DateTime;
}
void XDateTime::SetDateTime(const TDateTime & aDateTime)
{
m_DateTime = CalcDateTime( aDateTime );
}
void XDateTime::SetDateTime(const XLongDate & aLongDate,const XLongTime & aLongTime)
{
m_DateTime = CalcDateTime( aLongDate ) + CalcDateTime( aLongTime );
}
void XDateTime::SetDateTime(const XDate & aDate,const XTime & aTime)
{
m_DateTime = CalcDateTime( aDate ) + CalcDateTime( aTime );
}
void XDateTime::SetDateTime(const XDate & aDate)
{
m_DateTime = CalcDateTime( aDate );
}
void XDateTime::SetDateTime(const XLongDate & aLongDate)
{
m_DateTime = CalcDateTime ( aLongDate );
}
void XDateTime::SetDateTime(const XTime & aTime)
{
m_DateTime = CalcDateTime ( aTime );
}
void XDateTime::SetDateTime(const XLongTime & aLongTime)
{
m_DateTime = CalcDateTime( aLongTime );
}
void XDateTime::SetDateTime(const XDate & aDate,const XLongTime & aLongTime)
{
m_DateTime = CalcDateTime( aDate )+ CalcDateTime( aLongTime );
}
void XDateTime::SetDateTime(const XLongDate & aLongDate,const XTime & aTime)
{
m_DateTime = CalcDateTime( aLongDate ) + CalcDateTime( aTime );
}
void XDateTime::SetDateTime(int aYear,int aMonth,int aDay,int aHour,int aMinute,int aSecond,int aMillis)
{
m_DateTime = CalcDateTime( aYear,aMonth,aDay,aHour,aMinute,aSecond,aMillis);
}
void XDateTime::SetDateTime(int aYear,int aMonth,int aDay)
{
m_DateTime = CalcDateTime( aYear, aMonth, aDay );
}
void XDateTime::SetDateTime(int aHour,int aMinute,int aSecond,int aMillis)
{
m_DateTime = CalcDateTime( aHour,aMinute,aSecond,aMillis );
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -