COleDateTime类是没有基类的,它封装了MFC的DATE数据类型,并提供了一系列的方法,来操作DATE结构体中的信息。DATE数据类型在OLE automation中会用到,且其为VARIANT结构体成员之一。各位看官有谁对OLE automation有深入理解的,在此可以留言,言明其为何物。那么COleDateTime到底能用来干嘛呢?见名知意,它能用来表示日期和时间,在具体点,它可以表示(存储)一个“绝对的日期和时间值”。绝对时间是相对于相对时间而言的,例如2012年4月13日15点29分是个绝对时间,从此刻逝去的“1小时3分50秒”,这就是相对时间,简单说相对时间是绝对时间做差得到的,呵呵,有点罗嗦了。
DATE数据类型,说白了,其实就是一个浮点值(在mfc中是double),用来度量(或者说表示吧)自1899年12月30日午夜12点以后的时间。据此:
1899年12月31日午夜12点就可以用1.0来表示(是不是过了午夜12点,就1.0+1.0呢?应该是的),以此类推
1900年1月1日上午6点就表示为2.25;同理,
1899年12月29日午夜12点标示为-1.0;
1899年12月29日上午6点标示为-1.25。
注意,如果要解析时间(time)部分就使用上述数字(如2.25)小数部分的绝对值。
COleDateTime类能够处理的日期、时间范围为:100年1月1日---9999年12月31日,基本也够用啦,是吧?哈哈。
注意,COleDateTime不能处理夏令时。
COleDateTime也可用于仅表示日期或者仅表示时间。按照惯例,如果COleDateTime仅含时间值,那么此时日期就为日期0(1899年12月30日),有点绕吧!同理,COleDateTime仅表示日期时,那么其时间就为0:00。
下面我们来看看异常的情况,该类是如何处理的。如果你创建了一个COleDateTime对象,表示的日期<100,那么该日期会被COleDateTime对象接受,但是接下来对GetYear, GetMonth, GetDay, GetHour, GetMinute,  GetSecond的调用会失败,返回-1(这么看来,还不如不接受呢!)。早于mfc4.2版本时,是可以使用2位数的日期值的,但是在mfc4.2版本后,这就不允许了!为了避免上述问题,我们应该为COleDateTime对象指定4位数的日期,例如:

COleDateTime mytime(2006,1,1,0,0,0); // 1996--四位数
COleDateTime的基础的算数运算(+,-)结果可以使用COleDateTimeSpan类表示(两个COleDateTime相减,等于一个COleDateTimeSpan值)。COleDateTimeSpan代表相对值(还记得前文说的绝对时间值吗?),是一个时间间隔。上述两个类的关系,类似于CTime与CTimeSpan的关系。大家可以参照。
非得先用看起来很麻烦的GetDays, GetHours, GetMin...这些函数获取天、小时、分秒,然后再格式化字符串吗?没有一步到位的方法吗?当然不是啦!往下看:
COleDateTimeSpan有个Format方法,支持如下格式化字符串:

%a

Abbreviated weekday name

%A

Full weekday name

%b

Abbreviated month name

%B

Full month name

%c

Date and time representation appropriate for locale

%d

Day of month as decimal number (01 – 31)

%H

Hour in 24-hour format (00 – 23)

%I

Hour in 12-hour format (01 – 12)

%j

Day of year as decimal number (001 – 366)

%m

Month as decimal number (01 – 12)

%M

Minute as decimal number (00 – 59)

%p

Current locale’s A.M./P.M. indicator for 12-hour clock

%S

Second as decimal number (00 – 59)

%U

Week of year as decimal number, with Sunday as first day of week (00 – 53)

%w

Weekday as decimal number (0 – 6; Sunday is 0)

%W

Week of year as decimal number, with Monday as first day of week (00 – 53)

%x

Date representation for current locale

%X

Time representation for current locale

%y

Year without century, as decimal number (00 – 99)

%Y

Year with century, as decimal number

%z%Z

Time-zone name or abbreviation; no characters if time zone is unknown

%%

Percent sign

MFC的COleDateTime类在时间中的用法相关推荐

  1. MFC的COleDateTime类使用

    MFC的COleDateTime类使用 经常在软件开发中用到计算执行某个功能的耗时,有必要深入研究下COleDateTime类,以备不时之需.闲话少叙,书归正传,下面我们就一起来看看,该如何使用这个类 ...

  2. Python中self用法详解

    Python中self用法详解 https://blog.csdn.net/CLHugh/article/details/75000104 首页 博客 学院 下载 图文课 论坛 APP 问答 商城 V ...

  3. MFC下的ColeDateTime类转化QT下的QDateTime类的实现方法,深入讲解QDQDateTime,Double的时间转化QDateTime

    简介: COleDateTime类型实现为一个浮点值,从1899年12月30日午夜起计算"日"数.所以1899年12月31日午夜用数1.0来表示.相似的,1900年1月1日下午6时 ...

  4. java中使用 Date 和 SimpleDateFormat 类表示时间

    使用 Date 和 SimpleDateFormat 类表示时间 在程序开发中,经常需要处理日期和时间的相关数据,此时我们可以使用 java.util 包中的 Date 类.这个类最主要的作用就是获取 ...

  5. VC++ 利用MFC的CWindowDC类实现画线功能 在桌面窗口中画线 绘制彩色线条 CPen nPenStyle nWidth crColor

    目录 利用MFC的CWindowDC类实现画线功能 在桌面窗口中画线 绘制彩色线条 CPen nPenStyle nWidth crColor 接上:VC++ 绘制线条 OnLButtonDown函数 ...

  6. COleDateTime类 CTime类

    使用COleDateTime类 1) 获取当前时间.       CTime time;       time = CTime::GetCurrentTime(); 2) 获取时间元素.       ...

  7. java中的复合数据类型是什么_【填空题】类是Java中的一种重要的复合数据类型,是组成Java程序的基本要素。一个类的实现包括两部分:____和_____....

    [填空题]类是Java中的一种重要的复合数据类型,是组成Java程序的基本要素.一个类的实现包括两部分:____和_____. 更多相关问题 [名词解释] 观叶树木 [单选] 开花时有浓郁香气的树种是 ...

  8. 使用MFC里的类的方法

    在其它工程中,如Win32 Console Application,使用MFC里的类的方法: #define _AFXDLL #include <afx.h> 加上就可以使用了.有些类可能 ...

  9. calendar类计算时间距离_日期时间--JAVA成长之路

    Java中为处理日期和时间提供了大量的API,确实有把一件简单的事情搞复杂的嫌疑,各种类:Date Time Timestamp Calendar...,但是如果能够看到时间处理的本质就可以轻松hol ...

最新文章

  1. 开发日记-20190401
  2. 数据结构与算法刷题记录
  3. Batchsize不够大,如何发挥BN性能?探讨神经网络在小Batch下的训练方法
  4. leetcode 282. Expression Add Operators | 282. 给表达式添加运算符(中缀表达式求值)
  5. Spring.net的一个小例子
  6. Angular Web App部署Linux Nginx Https
  7. 用户空间与内核空间数据交换的方式------seq_file
  8. 安卓模拟器网页游戏连不上服务器,关于夜神模拟器游戏无法联网的原因和解决方法,请逐一排查...
  9. 你们一直吐槽的12306,你知道他们的的架构有多牛X吗
  10. python输入一系列的值_python中的input()和print()输入输出函数应用实例笔记
  11. 手动更新google服务框架
  12. Java集合框架--学习目标 集合概念 Collection体系集合 Collection接口
  13. C/C++学习笔记(2020.11---2021.5)
  14. explain mysql 耗时_借助慢查询日志和explain命令分析 MySQL慢查询语句分析总结
  15. 软考中级-软件设计师 复习指南(2021年11月已通过)
  16. zbb20170728 oracle 查看被锁对象
  17. Matlab软件绘制图像线颜色(RGB)参数设置
  18. JavaScript note
  19. 金蝶云星空与管易云系统对接案例
  20. 谷歌联合印企狙击华为鸿蒙OS:推出轻量版安卓系统打造智能手机

热门文章

  1. ubuntu安装和卸载软件命令
  2. 如何用Git将代码上传到GitHub
  3. 《Qt 学习之路 2》
  4. adb删除软件_苹果免越狱如何安装ipa 苹果免越狱安装软件安装教程【详解】
  5. DSM -- 进入linux文件系统
  6. R语言和python语言的区别在什么地方,各自的应用场景是什么
  7. 分布式Session共享和单点登录实现
  8. IOS Label下划线 中划线
  9. fortran数组下标、行号、continue
  10. 电脑重装系统失败无法开机怎么办如何解决