CString 转 CTime

来源:互联网 发布:js 日期选择插件 中文 编辑:程序博客网 时间:2024/06/08 14:19

CString   to   CTime:

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转为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);

二.将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函数,专用于格式化时间字符串,用法跟前者相像,例:

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));

 

 

构造一个CTime(year,month,day)

或者CString str = "2000-1-1 23:01:22" ;

COleDateTime tm;

tm.ParseDateTime(str);

SYSTEMTIME st;

tm.GetAsSystemTime(st);

CTime ct(st);

AfxMessageBox(ct.Format("%Y-%m-%d %H:%M:%S"));

//////////////////////////////////////////////

 CTime time = CTime::GetCurrentTime();

 CTime time4( 2006, 8, 7, 14, 4, 0 );

 if(time<time4)

 {

  AfxMessageBox("11", MB_OK);

 }

 else

 {

  AfxMessageBox("22", MB_OK);

 }

或者

CString   str    "2000-1-1   23:01:22"   

  COleDateTime   tm;  

  tm.ParseDateTime(str);  

  SYSTEMTIME   st;  

  tm.GetAsSystemTime(st);  

  CTime   ct(st);  

   

  AfxMessageBox(ct.Format("%Y-%m-%d   %H:%M:%S"));