您的位置:首页 > 其它

[置顶] CTime与COleDateTime时间操作类的使用

2017-07-26 18:02 169 查看
1、CTime类的常见使用

获取当前时间:

CTime time;
time = CTime::GetCurrentTime();

获取时间里面的各个元素:

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

获取时间间隔:

CTimeSpan timespan(0,0,1,0); // days,hours,minutes,seconds
timespan = CTime::GetCurrentTime() - time;

long nHours = timespan.GetHours();
long nMinute = timespan.GetMinutes();
//......

把时间转换为字符串:

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


把字符串转换为时间:

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


2、COleDateTime类的使用

获取当前时间/获取时间各个元素---与CTime相似,可查阅MSDN来进行了解

从字符串读取时间,COleDateTime可以对如下的字符串进行转化:

"25 January 1996"
"8:30:00"
"20:30:00"
"January 25, 1996 8:30:00"
"8:30:00 Jan. 25, 1996"
"1/25/1996 8:30:00" 
2012-12-24 15:30:48

以最后一个字符串格式为例,将其转换为时间:

COleDateTime vtime;
vtime.ParseDateTime("2017-07-26 17:55:10");

获取时间的间隔:
COleDateTime sysTime;
sysTime = COleDateTime::GetCurrentTime();

COleDateTime vtime;
vtime.ParseDateTime("2017-07-26 17:55:10");

COleDateTimeSpan tSpan;
tSpan = systime - vtime;
int nTMid = (int)tSpan.GetTotalMinutes();//时间差,以分钟数表示

说明 
■ CTime和COleDateTime具有几乎同样的功能。然而,COleDateTime允许用户获得一年中的某一天,以及在分析时间文本串上具有优势。
■ 与CTime相比, COleDateTime的优点在于它支持DWORD变量。COleDateTime使用的位数是双浮点的两倍,既然CTime只是简单地计算从1970 年1月1日之后经过的秒数,所以到了2037年它将达到4294967295,从而不能再使用。相反,COleDateTime是一个浮点数,他表示从1900年12月30号之后的天数(小时是天的小树部分),几千年不会溢出。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: