郁闷阳光的专栏

欢迎朋友们经常来逛逛,一起交流

Windows中如何计算时间间隔(2)COleDateTime 和COleDateTimeSpan类

   

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();

阅读更多
个人分类: C++/MFC WINDOWS C++/SDK
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭