CString strTime;
strTime.Format("%s",row[1]);
COleDateTime oleTime;
oleTime.ParseDateTime(strTime);
SYSTEMTIME sysTime;
oleTime.GetAsSystemTime(sysTime);
sysTime.wYear = sysTime.wYear;// 是不是很奇葩,却必须这样
CTime cTime(sysTime);
是这样的
CTime的时间范围和COleDateTime不同
你调试一下就会知道由于你没有制定年月日
所以st的年份默认是1899年
但是CTime最早只能到1970
所以它就用他能表示的最早的时间1970/1/1 0:0:0来初始化
这个时间是国际标注时
我们中国是东八区
所以CTime内部会做一个local的转换
结果就是1970/1/1 8:0:0
这就是你为什么会得到08:00:00的原因
修改一下st的年份即可
比如
1
2
3
4
5
6
7
8
|
COleDateTime dt;
SYSTEMTIME st;
dt.ParseDateTime(_T(
"19:23:22"
));
dt.GetAsSystemTime(st);
st.wYear = 2000;
CTime tmBegTime(st);
CString str = tmBegTime.Format(_T(
"%H:%M:%S"
));
|