📄 xdatetime.h
字号:
//---------------------------------------------------------------------------
#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 + -