⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xdatetime.cpp

📁 BCB的学习资料
💻 CPP
📖 第 1 页 / 共 4 页
字号:
    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 + -