CTime 使用总结2007-10-21 00:421.
初始化 m_begintime=CTime(2004,1,1,0,0,0,-1);//参数依次为year,month,day,hour,minite,second m_endtime =CTime::GetCurrentTime();//当前时间
2.日期比较
CTimeSpan span;
span=time1-time2;
得到两时间的间隔.
可以取得span.GetHours().等
3.access数据库查询
使用DateDiff()函数,具体参照access帮助
CString timesql;timesql.Format(" Where DateDiff('d',%s,'%s')<=0","日期",m_begintime.Format("%Y-%m-%d"));
4读取日期字段(odbc)
CDBVariant var; recset.GetFieldValue(i,var); s.Format("%d-%d-%d",(var.m_pdate)->year,(var.m_pdate)->month, (var.m_pdate)->day);
5.CTime转换为CString
例: m_begintime.Format("%Y-%m-%d");//2004-10-03
6.CString转换为CTime
//s="2004-10-5" int first=s.Find('-'); int second=s.Find('-',first+1);
int year=atoi(s.Left(4)); int month=atoi(s.Mid(first+1,second-first+1)); int day=atoi(s.Mid(second+1,s.GetLength()-second-1)); CTime temp(year,month,day,0,0,0);
7.判断CString是否表示的正确日期格式
//判断是否为2004-01-13 ch 可代表其他分隔符bool IsDate(CString str,char ch){ if(str.IsEmpty()) return false;//日期分段int first=str.Find(ch);int second=str.Find(ch,first+1);
int year=atoi(str.Left(4));int month=atoi(str.Mid(first+1,second-first+1));int day=atoi(str.Mid(second+1,str.GetLength()-second-1)); //判断if (year < 2000 || year >= 2010){ return false;}else if (month< 1 || month >12){ return false;}else if (day< 1 || day > 31){ return false;}else if (month == 4 || month == 6 || month == 9 || month == 11){ if(day > 30) { return false; } else { return true; }}else if (month == '2'){ if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) { if (day>29) { return false; } else { return true; } } else if (day>28) { return false; } return true;}else{ return true;} }
用VC编写数据库程序不可避免的会遇到_bstr_t 、CString 、CTime这几个类型之间的转换问题,令人头疼。今早上终于算是解决了CString和CTime的类型转换问题。
//CTime--〉CStringCTime t;t=CTime::GetCurrentTime();CString sur;sur.Format("%s",t.Format("%Y-%m-%d"));MessageBox(sur);
//long --> CStringlong a ;CString b;b.format("%ld",a);
//double --->CStringdouble a;CString b;b.format("%f",a);
//CString--〉CTime
CString sur;sur="2006-08-09";COleDateTime time1;time1.ParseDateTime(sur);SYSTEMTIME systime;VariantTimeToSystemTime(time1, &systime);CTime tm(systime);m_time=tm;UpdateData(false);
CString和int,float之间的转换。
1。int <->CString
1) int ->CString
int n = 1;
CString str;
str.Format("%d",n);
2) CString->int
CString str = "1";
int n = atoi(str.GetBuffer(0));
2. char* 与CString1)char*->CString
char sz[128];
CString str;
str.Format("%s",sz);
2) CString -> char*CString str;
int nLength = str.GetLength();
char* sz = new char[nLength];
sz = str.GetBuffer(0);
3. float<->CString1)float->CStringfloat f = 0.0;
CString str;
str.Format("%f",f);
2) CString->floatCString str = "0.0";
float f = atof(str.GetBuffer(0));
Format函数第一个参数是要转的那个数的类型
FileTime 和 CTime之间的转换问题
1. FileTime 转换成 CTime 方法(1) FILETIME ft; CTime time(ft);
方法(2) FILETIME ft; SYSTEMTIME st; BOOL bSuccess=::FileTimeToSystemTime(&ft, &st) if (bSuccess) //转换为SYSTEMTIME成功,下面转换成CTime CTime time(st);
2. CTime 转换成 FileTime CTime time(CTime::GetCurrentTime()); SYSTEMTIME st; time.GetAsSystemTime(st); FILETIME ft; ::SystemTimeToFileTime(&st, &ft);