CTime 的一般常用方法

1 篇文章 0 订阅

CTime 初始化

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

//或者 CTime T =CTime::GetCurrentTime(); //设置为当前时间 
year=t.GetYear(); //获取年份 
   
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);

方法二: 
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);

方法三: 
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-08-16 09:24: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,这一对由于从面向对象哪里得到了赞助,用以写出的代码更觉优雅

两个CTime time1,time2,计算他们的天数 
实际上产生的是个CTimeSpan对象,相当于: 
CTimeSpan span = time1 - time2; 
int days = span.GetDays();

又如: 
CTime time4( 2007, 1, 1, 22, 15, 0 ); // 10:15PM March 19, 1999 
CTime time = CTime::GetCurrentTime(); 
CTimeSpan span = time - time4; 
int iSeconds = span.GetSeconds(); 
int idays = iSeconds / 86400

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

leftyu2010

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值