CTime==>CString
CTime time;
time.GetCurrentTime();
CString str;
str.Format("%s",time.Format("%y:%m:%d %H-%M-%S")
1
CString str;
CTime t = CTime::GetCurrentTime();
str.Format("%d-%d-%d",t.GetYear(),t.GetMonth(),t.GetDay());
2
CString strTime;
CTime tTime = CTime::GetCurrentTime();
strTime = tTime.Format("%Y-%m-%d %H:%M:%S");
CString ==>CTime
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);
time_t time2=tm.GetTime(); //CTime--->time_t
COleDateTime time3(time2);//time_t--->COleDateTime
时间差
COleDateTimestrFirst,strEnd;
strFirst =COleDateTime(strFirst.GetYear(),strFirst.GetMonth(),strFirst.GetDay(),0,0,0);
strEnd =COleDateTime(tmCurrent.GetYear(),tmCurrent.GetMonth(),tmCurrent.GetDay(),23,59,59);
tspan= strEnd - strFirst;
注:两个时间相减时,小时数不足24小时的,自动略去,不做一天计算。如7.1号5点与7.2号3点间,就不能计算为一天。想要得出结果为一天的,要注意小时的赋值!!
CTime 使用总结
初始化
2.日期比较
CTimeSpan span;
span=time1-time2;
得到两时间的间隔.
可以取得span.GetHours().等
3.access数据库查询
使用DateDiff()函数,具体参照access帮助
CString timesql;
timesql.Format(" WhereDateDiff('d',%s,'%s')<=0","日期",m_begintime.Format("%Y-%m-%d"));
4读取日期字段(odbc)
5.CTime转换为CString
6.CString转换为CTime
7.判断CString是否表示的正确日期格式
//判断是否为2004-01-13
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)
{
}
else if (month< 1 || month >12)
{
}
else if (day< 1 || day > 31)
{
}
else if (month == 4 || month == 6 || month == 9 || month ==11)
{
}
else if (month == '2')
{
}
else
{
}
用VC编写数据库程序不可避免的会遇到_bstr_t 、CString、CTime这几个类型之间的转换问题,令人头疼。
今早上终于算是解决了CString和CTime的类型转换问题。
//CTime--〉CString
CTime t;
t=CTime::GetCurrentTime();
CString sur;
sur.Format("%s",t.Format("%Y-%m-%d"));
MessageBox(sur);
//long --> CString
long a ;
CString b;
b.format("%ld",a);
//double --->CString
double 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* 与CString
1)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<->CString
1)float->CString
float f = 0.0;
CString str;
str.Format("%f",f);
2) CString->float
CString 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