首页 > 学院 > 开发设计 > 正文

COleDateTime类型的应用

2019-11-08 00:25:59
字体:
来源:转载
供稿:网友

使用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 days5) 把字符串转换为时间。         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

二、CStringCString用法比较简单,可是有些用法长期不用会忘掉,为了下次要用的时候能快速通过经验找到答案,所以还是写下一些东西。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--->COleDateTimeCOleVariant vtime(strCString);COleDateTime time4=vtime;//CTime--->time_tCOleDateTime time3(time2);//time_t--->COleDateTime.

CString COleDateTime CTime互相转换 strCString="2003-10-27 6:24:37"; //CString--->COleDateTimeCOleVariant vtime(strCString);vtime.ChangeType(VT_DATE);COleDateTime time4=vtime;

COleDateTime time1(1977,4,16,2,2,2); //COleDataTime--->CTimeSYSTEMTIME systime;VariantTimeToSystemTime(time1, &systime);CTime tm(systime);

time_t time2=tm.GetTime(); //CTime--->time_tCOleDateTime time3(time2); //time_t--->COleDateTime

CString str = tDate.Format(_T("%Y-%m-%d"));


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表