COleDateTime型別的應用

2021-09-30 16:19:43 字數 4883 閱讀 8818

demo**示例:

//#include "stdafx.h"

#include // ctime, ctimespan

#include // coledatetime coledatetimespan

#include // coledatetime比ctime更有優勢,推薦統一使用atlcomtime.h中的匯出類

int _tmain(int argc, _tchar* ar**)

; time_t t = time(null);

coledatetime oledate(t);

cstring strtimefromatl = oledate.format(l"%y-%m-%d %h:%m:%s");

system("puase");

//if (ret)

// //}

// demo2

//coledatetime cur_time;

//cur_time.setdate(2013, 10, 21);

//cur_time.settime(12, 0, 0);

//cstring strcurtime = cur_time.format(l"%y/%m/%d");

// demo1

//ctime date_time = ctime::getcurrenttime();

//ctime old_time = date_time - ctimespan(2, 2, 2, 2);

//cstring stroldtime = old_time.format(l"%y-%m-%d %h:%m:%s");

//ctimespan time_span = date_time - old_time;

//int day = time_span.getdays();

return 0;}

使用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只是簡單地計算從2023年1月1日之後經過的秒數,所以到了2023年它將達到4294967295,從而不能再使用。相反,coledatetime是乙個

浮點數,它表示是從2023年12月30號之後的天數(小時是天的小數部分),幾千年之內不會溢位。

補充:

一、coledatetime

.net有datetime類用來處理日期時間,很方便,vc則可以用atl庫的coledatetime類,用起來也還不錯:

首先包含相關的標頭檔案:

#include

初始化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只是簡單地計算從2023年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"));

【出處】

COleDateTime型別的應用

使用coledatetime類 1 獲取當前時間。ctime time time ctime getcurrenttime 2 獲取時間元素。int year time.getyear int month time.getmonth int day time.getday int hour time...

MFC的COleDateTime類使用

date資料型別,說白了,其實就是乙個浮點值 在mfc中是double 用來度量 或者說表示吧 自1899年12月30日午夜12點以後的時間。據此 1899年12月31日午夜12點就可以用1.0來表示 是不是過了午夜12點,就1.0 1.0呢?應該是的 以此類推 1900年1月1日上午6點就表示為2...

MFC的COleDateTime類使用

mfc的coledatetime類使用 date資料型別,說白了,其實就是乙個浮點值 在mfc中是double 用來度量 或者說表示吧 自1899年12月30日午夜12點以後的時間。據此 1899年12月31日午夜12點就可以用1.0來表示 是不是過了午夜12點,就1.0 1.0呢?應該是的 以此類...