函数: ctime
功 能: 把日期和时间转换为字符串
用 法: char ctime(const time_t time);
程序例:
#include
#include
int main(void)
{
time_t t;
t=time(t);
printf("Today's date and time: %s\n", ctime(t));
return 0;
}//代码效果参考:http://www.ezhiqi.com/zx/art_7674.html
注:若在linux下使用本函数,需要include 头文件
类: 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,这一对由于从面向对象哪里得到了赞助,用以写出的代码更觉优雅
文章声明
作者:Owen
出处:
本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。该博客同步发在
HEXO-博客