zoukankan      html  css  js  c++  java
  • C++中,CTime 与 CString转换(转)

    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,你知道多少?

    http://blog.csdn.net/steedhorse/archive/2005/03/25/330206.aspx

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

  • 相关阅读:
    leetcode 18 4Sum
    leetcode 71 Simplify Path
    leetcode 10 Regular Expression Matching
    leetcode 30 Substring with Concatenation of All Words
    leetcode 355 Design Twitte
    leetcode LRU Cache
    leetcode 3Sum
    leetcode Letter Combinations of a Phone Number
    leetcode Remove Nth Node From End of List
    leetcode Valid Parentheses
  • 原文地址:https://www.cnblogs.com/rainbowzc/p/1397095.html
Copyright © 2011-2022 走看看