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/archive/2012/08/28/3579114.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    C++CTime使用方法

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/61026

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月9日 上午9:44
下一篇 2023年2月9日 上午9:45

相关推荐