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

📄 xdatetime.h

📁 BCB的学习资料
💻 H
📖 第 1 页 / 共 2 页
字号:
//---------------------------------------------------------------------------

#ifndef XDateTimeH
#define XDateTimeH
#include <XCommonType.h>
//---------------------------------------------------------------------------
namespace zdhsoft
{
/*
    关于日期时间系列类的说明
    目前通用库暂时包括XDate,XTime,XLongDate,XLongTime,XDateTime
    其中XDate,XTime主要用于表现日期时间,也提供日期或时间运算的功能。
    而XLongDate,XLongTime则主要用于提供日期时间计算功能。
    XDateTime则是将XLongDate,XLongTime集中表现出来了,也同样具有日期时间计算功能。
    有效的日期范围是1-1-1~~9999-12-31
    有效的时间范围是00:00:00.000~23:59:59:999
*/
//类的前置申明
class XTime;
class XDate;
class XDateTime;
class XLongTime;
class XLongDate;
//全局函数
extern int  GetMonthDays(int aYear,int aMonth);
extern bool IsRawYear(int aYear);
extern int  GetDays(int aYear,int aMonth,int aDay);


//这个函数主要用于表现日期,不具有日期运算功能
class XDate
{
public:
    XDate();
    XDate(const XDate & aDate);
    XDate(const XDateTime & aDateTime);
    XDate(const TDateTime & aDateTime);
    XDate(const XLongDate & aLongDate);
    XDate(int aYear,int aMonth,int aDay);


    int GetYear() const { return m_Year; }
    int GetMonth() const { return m_Month; }
    int GetDay() const { return m_Day; }
    int GetWeek() const;
    //取离公元元年的天数
    int GetDays() const;

    void SetYear(int aYear);
    void SetMonth(int aMonth);
    void SetDay(int aDay);

    void SetDate(int aYear,int aMonth,int aDay);
    void SetDate(const XDate & aDate);
    void SetDate(const XDateTime & aDateTime);
    void SetDate(const TDateTime & aDateTime);
    void SetDate(const XLongDate & aLongDate);

    XDate & operator = (const XDate & aDate );
    XDate & operator = (const XDateTime & aDateTime );
    XDate & operator = (const TDateTime & aDateTime );
    XDate & operator = (const XLongDate & aLongDate );

    AnsiString ToString();

    __property int Year = { read = GetYear, write = SetYear };
    __property int Month = { read = GetMonth ,write = SetMonth };
    __property int Day = { read = GetDay, write = SetDay };
    __property int Week = { read = GetWeek };
private:
    XByte m_Month;
    XByte m_Day;
    XWord m_Year;
};
//这个函数主要用于运算日期,不具有表现日期的功能
//关于有效天数范围是:1~MAX_DAYS
//一般情况下,如果设置的天数为零,则表该值是最大的日期
//如果不为零,而余数为零,则视为公元元年
class XLongDate
{
public:
    XLongDate(XInt aLongDate = 1);
    XLongDate(const XDateTime & aDateTime);
    XLongDate(const XLongDate & aLongDate);
    XLongDate(const TDateTime & aDateTime);
    XLongDate(const XDate & aDate);
    XLongDate(int aYear,int aMonth,int aDay);
    ~XLongDate();
    //SetDate
    void SetDate(int aYear,int aMonth,int aDay) ;
    void SetDate(const XDate & aDate);
    void SetDate(const XLongDate & aLongDate);
    void SetDate(const XDateTime & aDateTime);
    void SetDate(const TDateTime & aDateTime);
    //method RoundDate
    static XInt RoundDate(XInt aLongDate);
    //method CalcLongTime
    static XInt CalcLongDate(const XDate & aDate) ;
    static XInt CalcLongDate(const TDateTime & aDateTime);
    static XInt CalcLongDate(const XDateTime & aDateTime);
    static XInt CalcLongDate(int aYear,int aMonth,int aDay);
    //operator  ...()
    operator XDate() const;
    operator XInt() const { return m_LongDate; }
    operator TDateTime() const;
    operator XDateTime() const;
    //method Decode
    XDate Decode() const;
    void Decode(int &aYear,int &aMonth,int &aDay) const;
    void Decode(XDate & aDate) const;
    //operator-
    XLongDate operator-(XInt aDays) const;
    //求相差的天数
    XInt operator-(const XLongDate & aLongDate) const;
    XInt operator-(const XDate & aDate) const;
    XInt operator-(const XDateTime & aDateTime) const;
    XInt operator-(const TDateTime & aDateTime) const;
    //operator+
    XLongDate operator+(XInt aDays) const;
    //operator-=
    XLongDate & operator-=(XInt aDays);
    //operator+=
    XLongDate & operator+=(XInt aDays);
    //operator++,--
    XLongDate & operator++();
    XLongDate operator++(int);
    XLongDate & operator--();
    XLongDate operator--(int);
    //
    XInt GetLongDate() const { return m_LongDate; }
    //比较方法
    //operator!=
    bool operator==(const XLongDate & aLongDate) const;
    bool operator==(XInt aLongDate ) const;
    bool operator==(const XDateTime & aDateTime) const;
    bool operator==(const XDate & aDate) const;
    bool operator==(const TDateTime & aDateTime) const;

    bool operator!=(const XLongDate & aLongDate) const;
    bool operator!=(XInt aLongDate ) const;
    bool operator!=(const XDateTime & aDateTime) const;
    bool operator!=(const XDate & aDate) const;
    bool operator!=(const TDateTime & aDateTime) const;

    bool operator>=(const XLongDate & aLongDate) const;
    bool operator>=(XInt aLongDate ) const;
    bool operator>=(const XDateTime & aDateTime) const;
    bool operator>=(const XDate & aDate) const;
    bool operator>=(const TDateTime & aDateTime) const;

    bool operator<=(const XLongDate & aLongDate) const;
    bool operator<=(XInt aLongDate ) const;
    bool operator<=(const XDateTime & aDateTime) const;
    bool operator<=(const XDate & aDate) const;
    bool operator<=(const TDateTime & aDateTime) const;

    bool operator<(const XLongDate & aLongDate) const;
    bool operator<(XInt aLongDate ) const;
    bool operator<(const XDateTime & aDateTime) const;
    bool operator<(const XDate & aDate) const;
    bool operator<(const TDateTime & aDateTime) const;

    bool operator>(const XLongDate & aLongDate) const;
    bool operator>(XInt aLongDate ) const;
    bool operator>(const XDateTime & aDateTime) const;
    bool operator>(const XDate & aDate) const;
    bool operator>(const TDateTime & aDateTime) const;

private:
    XInt m_LongDate;
};
//这个函数主要用于表现时间,不具有时间运算功能
class XTime
{
public:
    XTime(const XTime &aTime);
    XTime(const XLongTime & aTime);
    XTime(const XDateTime & aDateTime);
    XTime(int aHour=0,int aMinute = 0,int aSecond = 0,int aMillis = 0);
    XTime(const TDateTime & aDateTime);
    ~XTime();
    //operator=
    XTime & operator=(const XTime &aTime);
    XTime & operator=(const XLongTime & aTime)
    {
        SetTime( aTime );
        return *this;
    }
    XTime & operator=(const XDateTime & aDateTime)
    {
        SetTime( aDateTime );
        return *this;
    }
    XTime & operator=(const TDateTime & aDateTime)
    {
        SetTime( aDateTime );
        return *this;
    }
    //Method SetTime
    void SetTime(int aHour=0,int aMinute=0,int aSecond=0,int aMillis = 0);
    void SetTime(const XTime & aTime);
    void SetTime(const XLongTime & aLongTime);
    void SetTime(const XDateTime & aDateTime); 
    void SetTime(const TDateTime & aDateTime);
    //method Get...    
    int GetHour() const   { return m_Hour; }
    int GetMinute() const { return m_Minute; }
    int GetSecond() const { return m_Second; }
    int GetMillis() const { return m_Millis; }
    //Method Set...
    void SetHour(int v);
    void SetMinute(int v);
    void SetSecond(int v);
    void SetMillis(int v);
    //Method ToString
    AnsiString ToString() const;
public:
    __property int Hour = { read = GetHour, write = SetHour };
    __property int Minute = { read = GetMinute, write = SetMinute };
    __property int Second = { read = GetSecond, write = SetSecond };
    __property int Millis = { read = GetMillis, write = SetMillis };
private:
    XByte m_Hour;
    XByte m_Minute;
    XByte m_Second;
    XWord m_Millis;
};

class XLongTime
{
public:
    XLongTime(XInt aLongTime = 0);
    XLongTime(const XTime & aTime);
    XLongTime(const XLongTime & aLongTime);
    XLongTime(const XDateTime & aDateTime);
    XLongTime(const TDateTime & aDateTime);
    XLongTime(int aHour,int aMinute,int aSecond,int aMillis = 0);
    ~XLongTime();
    //operator=
    XLongTime & operator=(const XTime & aTime);
    XLongTime & operator=(const XLongTime & aLongTime);
    XLongTime & operator=(const XDateTime & aDateTime);
    XLongTime & operator=(const TDateTime & aDateTime);
    XLongTime & operator=(const XInt & aLongTime);
    //operator++
    XLongTime & operator++();
    XLongTime operator++(int);
    //operator--
    XLongTime & operator--();
    XLongTime operator--(int);
    //operator-
    XLongTime operator-(const XLongTime & aLongTime) const ;
    XLongTime operator-(XInt aLongTime) const;
    XLongTime operator-(const XTime &aTime) const;
    XLongTime operator-(const XDateTime &aDateTime) const;
    XLongTime operator-(const TDateTime &aDateTime) const;
    //operator+
    XLongTime operator+(const XLongTime & aLongTime) const;
    XLongTime operator+(XInt aLongTime) const;
    XLongTime operator+(const XTime &aTime) const;
    XLongTime operator+(const XDateTime &aDateTime) const;
    XLongTime operator+(const TDateTime &aDateTime) const;
    //operator+=
    XLongTime & operator+= (const XLongTime & aLongTime);
    XLongTime & operator+= (XInt aLongTime);
    XLongTime & operator+= (const XDateTime &aDateTime);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -