C++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\n", 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,这一对由于从面向对象哪里得到了赞助,用以写出的代码更觉优雅

原文地址:https://www.cnblogs.com/owenyang/p/3579114.html