COleDateTime 和COleDateTimeSpan 也是常用的2个时间类,其用法类似于前面的CTime和CTimeSpan.先分别进行说明,下面的内容引用自MSDN。
COleDateTime没有基类。
COleDateTime类封装了OLE自动化中使用的DATE数据类型。它是OLE自动化的VARIANT数据类型的可能类型之一。一个COleDateTime值代表一个绝对的日期和时间值。
DATE类型实现为一个浮点值,从1899年12月30日午夜起计算“日”数。所以1899年12月31日午夜用数1.0来表示。相似的,1900年1月1日下午6时用数2.75来表示,1899年12月29日午夜是-1.0。而1899年12月29日下午6 时用数-0.25来表示。
注意:解释时间各部分的值时,要取数据的相应部分的绝对值。
COleDateTime类处理了从100年1月1日到9999年12月31日的日期。
注意:
COleDateTime忽略了夏时制。可参阅联机文档《Visual C++程序员指南》中的“日期和时间:自动支持”,以了解详细情况。该类型也可用于仅仅代表日期或时间的值。按通常约定,日期0(1899年12月30日)用于仅代表时间的值,相似地,时间0:00(午夜)用于仅代表日期的值。
如果创建一个日期小于100的COleDateTime对象,则此日期可被接受,但以后调用GetYear,GetMonth,GetDay,GetHour,GetMinute和GetSecond将失败,并返回-1。以前可用两位表示日期,但在MFC 4.2及以后的版本中,日期必须大于等于100。
要避免出现问题,可指定4位表示日期,例如:
COleDataTime.mytime(1996,1,1,0,0,0);
COleDateTime值的算术运算使用伴生类COleDateTimeSpan。COleDateTimeSpan值代表相对时间,一个区间。它们之间的关系类似于CTime和CTimeSpan之间的关系。
头文件
#include <afxdisp.h>
COleDateTime类的成员
构造函数
COleDateTime构造一个COleDateTime对象
GetCurrentTime创建一个代表当前时间的COleDateTime对象(静态成员函数)
属性
GetStatus获取该COleDateTime对象的状态(有效性)
SetStatus设置该COleDateTime对象的状态(有效性)
GetAsSystemTime转换COleDateTime对象的时间用一个SYSTEMTIME数据结构表示
GetYear返回该COleDateTime对象代表的年
GetMonth返回该COleDateTime对象代表的月(1-12)
GetDay返回该COleDateTime对象代表的日(1-31)
GetHour返回该COleDateTime对象代表的时(0-23)
GetMinute返回该COleDateTime对象代表的分(0-59)
GetSecond返回该COleDateTime对象代表的秒(0-59)
GetDayOfWeek返回该COleDateTime对象代表的该天是星期几(星期日=1)
GetDayOfYear返回该COleDateTime对象代表的该天是年内第几天(1月1日=1)
操作
SetDateTime设置该COleDateTime对象值为指定的日期/时间值
SetDate设置该COleDateTime对象值为指定的日期值
SetTime设置该COleDateTime对象值为指定的时间值
Format生成一个代表一COleDateTime对象的格式化字符串
ParseDateTime从一个字符串读取一个日期/时间值并设置为COleDateTime的值
操作符
operator DATE将一个COleDateTime值转换为一个DATE
operator DATE*将一个COleDateTime值转换为一个DATE*
operator =复制一个COleDateTime值
operator +, -加减COleDateTime值
operator +=, -=从该COleDateTime对象中加上或减去一个COleDateTime值
关系操作符比较两个COleDateTime值
数据成员
m_dt包含该COleDateTime对象对应的DATE
m_status包含该COleDateTime对象的状态
归档/存储
operator <<从CArchive或CDumpContext输出COleDateTime值
operator >>从CArchive输入一个COleDateTime值
COleDateTimeSpan
COleDateTimeSpan没有基类。
一个COleDateTimeSpan对象表示一个相对的时间,即一个时间段。
COleDateTimeSpan以日为单位来保存时间。
COleDateTimeSpan类常常与类COleDateTime一起使用。COleDateTime封装了OLE自动化中的DATE数据类型。COleDateTime表示绝对的时间值。所有的COleDateTime计算都涉及COleDateTimeSpan值。这两个类之间的关系类似于类CTime和类CTimeSpan之间的关系。
有关类COleDateTime和COleDateTimeSpan的更进一步的信息,可以参考“Visual C++程序员指南”一书中的文章“日期与时间:自动化支持”。
#include <afxdisp.h>
COleDateTimeSpan类成员
构造
COleDateTimeSpan | 构造COleDateTimeSpan对象 |
属性
GetStatus | 获取COleDateTimeSpan对象的状态(有效性) |
SetStatus | 设置COleDateTimeSpan对象的状态(有效性) |
GetDays | 返回COleDateTimeSpan对象所表示的时间段的日部分 |
GetHours | 返回COleDateTimeSpan对象所表示的时间段的小时部分 |
GetMinutes | 返回COleDateTimeSpan对象所表示的时间段的分钟部分 |
GetSeconds | 返回COleDateTimeSpan对象所表示的时间段的秒部分 |
GetTotalDays | 返回COleDateTimeSpan对象所表示的天数 |
GetTotalHours | 返回COleDateTimeSpan对象所表示的小时数 |
属性
GetTotalMinutes | 返回COleDateTimeSpan对象所表示的分钟数 |
GetTotalSeconds | 返回COleDateTimeSpan对象所表示的秒数 |
操作
SetDateTimeSpan | 设置COleDateTimeSpan对象的值 |
Format | 产生一个COleDateTimeSpan对象的格式化字符串表达式 |
操作
operator double | 将COleDateTimeSpan的值转换为双精度值 |
operator = | 拷贝一个COleDateTimeSpan值 |
operator +,- | 加、减COleDateTimeSpan值,或改变COleDateTimeSpan值的符号 |
operator +=,-= | 从一个COleDateTimeSpan值中加、减这个COleDateTimeSpan值 |
关系操作符 | 比较两个COleDateTimeSpan值 |
数据成员
m_span | 记录这个COleDateTimeSpan对象所代表的基本的双精度值 |
m_status | 记录COleDateTimeSpan对象的状态 |
Dump/Archive
operator << | 将COleDateTimeSpan值输出到CArchive或CDumpContext |
operator >> | 从CArchive输入一个COleDateTimeSpan对象 |
SYSTEMTIME &stTimeF;
SYSTEMTIME &stTimeS;
。。。。。。。。。。。
COleDateTime dTimeF(stTimeF);
COleDateTime dTimeS(stTimeS);
COleDateTimeSpan dTimeSpan = dTimeF - dTimeS;
int nSecnonSpan = dTimeSpan.GetTotalSeconds();