zoukankan      html  css  js  c++  java
  • 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,这一对由于从面向对象哪里得到了赞助,用以写出的代码更觉优雅

  • 文章声明
  • 作者:Owen
  • 出处: http://www.cnblogs.com/owenyang
  • 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。该博客同步发在 HEXO-博客
查看全文
  • 相关阅读:
    java实现简单文件操作工具类
    (leetCode)Reverse Integer—颠倒整数
    (FLEX)AS3,for循环里面加监听,只能取到最后一个元素的取巧方法解决方法
    .net backend return json string , used by frontend
    Server Error in '/' Application. 访问Webservice报错。解决办法之一。
    Win7 64位ORACLE取数字乱码的解决
    WIN7-64位安装PLSQL-Developer步骤
    在Win7 64位操作系统下安装Oracle 10g
    HashMap 数据结构分析
    JAVA NIO原理剖析
  • 原文地址:https://www.cnblogs.com/owenyang/p/3579114.html
  • Copyright © 2011-2022 走看看