请输入您要查询的百科知识:

 

词条 ctime
释义

函数: ctime

功 能: 把日期和时间转换为字符串

用 法: char *ctime(const time_t *time);

程序例:

#include <cstdio>

#include <ctime>

int main(void)

{

time_t t;

t=time(&t);

printf("Today's date and time: %s\", ctime(&t));

return 0;

}

注:若在linux下使用本函数,需要include <time.h>头文件

--------------------------------------------------------------------------------------------------------------------

类: CTime()

创建CTime对象, 使他的时间为当前时间。

类函数:

GetMinute() 得到分钟.

GetSecond() 得到秒;

GetHour() 得到小时;

GetDay() 得到 CTime持有的"天" ;

GetMonth() 得到月;

GetDayOfWeek() 得到 CTime持有的"天"是一星期中的那一天 ;

GetYear() 得到年;

GetTime() 返回用 __time32_t 表示的时间;

在VC6下只支持到2039年,也就是2的32次方秒

例:

CTime T;

int year;

T=CTime(2008,8,8,8,8,8); //设置时间为2008年8月8号8时8分8秒

//或者 CTime T =CTime::GetCurrentTime(); //设置为当前时间

year=t.GetYear(); //获取年份

=====================================================================

C++中,CTime 与 CString转换

CTime m_StartTime1 = CTime::GetCurrentTime();

CString csStartTime = m_StartTime1.Format( "%Y%m%d%H%M%S" );

一.将CString转为CTime的几种方法

CString timestr = "2000年04月05日";

int a,b,c ;

sscanf(timestr.GetBuffer(timestr.GetLength()),"%d年%d月%d日",&a,&b,&c);

CTime time(a,b,c,0,0,0);

--------or - ---------------------

CString s("2001-8-29 19:06:23");

int nYear, nMonth, nDate, nHour, nMin, nSec;

sscanf(s, "%d-%d-%d %d:%d:%d", &nYear, &nMonth, &nDate, &nHour, &nMin, &nSec);

CTime t(nYear, nMonth, nDate, nHour, nMin, nSec);

---- or ------------------------

CString timestr = "2000年04月05日";

int year,month,day;

BYTE tt[5];

//get year

memset(tt, 0, sizeof(tt));

tt[0] = timestr[0];

tt[1] = timestr[1];

tt[2] = timestr[2];

tt[3] = timestr[3];

year= atoi((char *)tt);

//get month

memset(tt, 0, sizeof(tt));

tt[0] = timestr[6];

tt[1] = timestr[7];

month = atoi((char *)tt);

//get day

memset(tt, 0, sizeof(tt));

tt[0] = timestr[10];

tt[1] = timestr[11];

CTime time(year,month,day,0,0,0);

从上面来看,很明显使用sscanf()函数的优势.

二.将CTIme转换为CString的方法:

CTime tmSCan = CTime::GetCurrentTime();

CString szTime = tmScan.Format("'%Y-%m-%d %H:%M:%S'");

这样得到的日期时间字符串就是以"2006-11-27 23:30:59"的格式.这是不是很方便呢?

//取得CTime中的日期

CString cstrDate = tmScan.Format("%Y-%m-%d");

//取得CTime中的时间

CString cstrTime = tmScan.Format("%H:%M-%S");

sprintf还有个不错的表妹:strftime,专门用于格式化时间字符串的,用法跟她表哥很像,也是一大堆格式控制符,只是毕竟小姑娘家心细,她还要调用者指定缓冲区的最大长度,可能是为了在出现问题时可以推卸责任吧。这里举个例子:

更多更好的sprintf()函数说明参考:《spirntf,你知道多少?》

time_t t = time(0);

//产生"YYYY-MM-DD hh:mm:ss"格式的字符串。

char s[32];

strftime(s, sizeof(s), "%Y-%m-%d %H:%M:%S", localtime(&t));

sprintf在MFC中也能找到他的知音:CString::Format,strftime在MFC中自然也有她的同道:CTime::Format,这一对由于从面向对象哪里得到了赞助,用以写出的代码更觉优雅

随便看

 

百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。

 

Copyright © 2004-2023 Cnenc.net All Rights Reserved
更新时间:2024/12/23 20:18:54