前几天碰到一个需要将2008-08-08 08:09:09这样得字符串转换为CTime类型的问题。
方法一:
当时自己最先想到的是将它们切分开来,分成年、月、日、时、分、秒,首先定义
CString strDateTime =_T("2008-08-08 08:09:09");
CString strDate=_T(""), strTime =_T("");
strDate =strDatetime.Left(10); strTime =strDateTime.Right(8);
CString strYear, strMonth, strDay, strHour, strMinute, strSecond;
strYear =strDate.Left(4); strMonth =strDate.Mid(6, 2); strDay =strDate.Right(2);
strHour =strTime.Left(2); strMinute =strTime.Mid(4,2); strSecond =strTime.Right(2);
int nYear, nMonth, nDay, nHour, nMinute, nSecond;
nYear =atoi(strYear); nMonth =atoi(strMonth); nDay =aoti(strDay);
nHour =atoi(strHour); nMinute =atoi(strMinute); nSecond =atoi(strSecond);
CTime tmNeed =CTime(nYear, nMonth, nDay, nHour, nMinute, nSecond);
这种方法较为复杂,但对传过来的时间字符串的格式要一致。
方法二:
strCString="2003-10-27 6:24:37"; //CString--->COleDateTime
COleVariant vtime(strCString);
vtime.ChangeType(VT_DATE);
COleDateTime time4=vtime;
COleDateTime time1(1977,4,16,2,2,2); //COleDataTime--->CTime
SYSTEMTIME systime;
VariantTimeToSystemTime(time1, &systime);
CTime tm(systime);
该方法较为简单。