【转】COleDateTime类型的应用
2012-02-06 16:10
120 查看
使用COleDateTime类 1) 获取当前时间。 CTime time; time = CTime::GetCurrentTime(); 2) 获取时间元素。 int year = time.GetYear() ; int month = time.GetMonth(); int day = time.GetDay(); int hour = time.GetHour(); int minute = time.GetMinute(); int second = time.GetSecond(); int DayOfWeek = time.GetDayOfWeek() ; 3) 获取时间间隔。 CTimeSpan timespan(0,0,1,0); // days,hours,minutes,seconds timespan = CTime::GetCurrentTime() - time; 4) 把时间转换为字符串。 CString sDate,sTime,sElapsed Time ; sDate = time.Format("%m/%d/%y"); //ex: 12/10/98 sTime = time.Format("%H:%M:%S"); //ex: 9:12:02 sElapsed Time = timespan.Format("%D:%H:%M:%S"); // %D is total elapsed days 5) 把字符串转换为时间。 CString sDateTime; int nYear, nMonth, nDate, nHour, nMin, nSec; sscanf(sDateTime, "%d-%d-%d %d:%d:%d", &nYear, &nMonth, &nDate, &nHour, &nMin, &nSec); CTime sTime(nYear, nMonth, nDate, nHour, nMin, nSec); 要想知道更多的时间格式,参见MFC文档中的strftime 使用COleDateTime类 1) 获得一年中的某一天。 COleDateTime datetime; datetime = COleDateTime::GetCurrentTime(); int DayOfYear = datetime.GetDayOfYear(); 2) 从文本串中读取时间。 COleDateTime datetime; datetime.ParseDateTime("12:12:23 27 January 93"); 3) 获取时间间隔。 //比方计算日期差 COleDateTime begin_date(1970, 1, 1, 0, 0, 0); COleDateTime end_date(1990, 1, 1, 0, 0, 0); COleDateTimeSpan timeSpan; //计算时间差 timeSpan = end_date - begin_date; long expi_date = timeSpan.GetDays(); 说明 ■ CTime和COleDateTime具有几乎同样的功能。然而,COleDateTime允许用户获得一年中的某一天(创建Julian日期的一种好方法),以及分析一个时间文本串。 ■ 与CTime相比, COleDateTime的优点在于它支持DWORD变量。COleDateTime使用的位数是双浮点的两倍,既然CTime只是简单地计算从1970年1月1日之后经过的秒数,所以到了2037年它将达到4294967295,从而不能再使用。相反,COleDateTime是一个 浮点数,它表示是从1900年12月30号之后的天数(小时是天的小数部分),几千年之内不会溢出。 补充: 一、COleDateTime .Net有DateTime类用来处理日期时间,很方便,VC则可以用ATL库的COleDateTime类,用起来也还不错: 首先包含相关的头文件: #include <ATLComTime.h> 初始化COleDateTime实例: COleDateTime date_time; date_time.SetDate(Year, Month, Day); date_time.SetTime(Hour, Minute, Second); COleDateTime重载了+,-,+=,-=等运算符,可以方便的让时间日期前进倒退,操作对象为COleDateTimeSpan,如: date_time += COleDateTimeSpan(Day, Hour, Minute, Second); //天,时,分,秒 COleDateTime还可以将一个有效的时间字符串Parse过来,初始化实例本身: date_time.ParseDateTime(CString("2008-04-18 09:00:00")); 反过来,COleDateTime可以Format成一个时间日期格式的字符串CString: date_time.Format(L"%Y%m%d"); // 年,月,日, 注意m大写表示分钟Minute 二、CString CString用法比较简单,可是有些用法长期不用会忘掉,为了下次要用的时候能快速通过经验找到答案,所以还是写下一些东西。 CString 有个Format成员,能转化成一个CString,参数跟C的printf用法差不多,如: CString str; str.Format("%s%d%02i", CString("Example"), 9, 1);// 第一个参数string,第二个Signed十进制数,第三个是宽度为2,不够则以0填充的Signed十进制数, 因此操作之后str的值为: Expample901 CTime COleDateTime的常用操作和比较(转) 1) 获取当前时间。 datetime = COleDateTime::GetCurrentTime(); CTime和COleDateTime具有几乎同样的功能。 与CTime相比, COleDateTime的优点在于它支持DWORD变量。 COleDateTime使用的位数是双浮点的两倍,既然CTime只是简单地计算从1970年1月1日之后经过的秒数,所以到了2 0 3 7年它将达到4 2 9 4 9 6 7 2 9 5,从而不能再使用。 //CString--->COleDateTime COleVariant vtime(strCString);COleDateTime time4=vtime; //CTime--->time_t COleDateTime time3(time2); //time_t--->COleDateTime. CString COleDateTime CTime互相转换 strCString="2003-10-27 6:24:37"; //CString--->COleDateTime COleVariant vtime(strCString); vtime.ChangeType(VT_DATE); COleDateTime time4=vtime; COleDateTime time1(1977,4,16,2,2,2); //COleDataTime--->CTime SYSTEMTIME systime; VariantTimeToSystemTime(time1, &systime); CTime tm(systime); time_t time2=tm.GetTime(); //CTime--->time_t COleDateTime time3(time2); //time_t--->COleDateTime CString str = tDate.Format(_T("%Y-%m-%d")); 我用到的是红字部分,把时间类型转换成CString类型,我真正是要实现 时间类型转换成long类型。进行计算用的。但是没找到其他的更好,更直接的办法,所以间接转换一下,如果哪位朋友有更好地办法,请给我留言。。。谢谢 |
相关文章推荐
- [转载]COleDateTime类型的应用
- MFC学习(15)COleDateTime类型的应用
- COleDateTime类型的应用
- C# 自定义数据类型 数组应用 读取XML
- 第48讲:Scala类型约束代码实战及其在Spark中的应用源码解析学习笔记
- jquery ajax 应用返回类型是html json
- Redis数据类型应用场景及具体方法总结
- 如何应用Asp.Net Mvc内建功能(DefaultModelBinder)实现简单类型、复杂类型、集合类型,以及字典类型的自动绑定
- Android应用资源概要---资源类型(Resource Types)
- 补码的应用:从buffer里的一段char*根据数据类型和长度转换成相应的整型
- 数据库应用类型
- 【转载】COM 组件设计与应用(三)——数据类型
- 第07天OC语言(03):协议应用场景1-类型限定
- 枚举类型应用举例
- PL/SQL 11g R2 —— 复合数据类型应用
- Redis 类型的相关应用
- 存储基础:DAS/NAS/SAN存储类型及应用
- Web应用中常见MIME类型及应用示例
- 存储基础:DAS/NAS/SAN存储类型及应用
- Oracle开发应用中报以ORA类型的9个错误汇总