然而在有些时候,我们CString存储的时间,需要转换赋值给CTime变量,怎么办呢?
我们找不到可以直接将字符串转换为时间格式的C函数,CTime也没有接受字符串初始化或者赋值的,难道要我们自己去字符串提取时间的各个部分吗?这样也太麻烦了吧。
不过通过查阅资料,发现了一个转换方法,那就是借助COleDateTime类。COleDateTime类提供了将字符串转换为时间格式的成员函数ParseDateTime,所以转为了时间格式后,再在不同的时间格式转换就方便了。ParseDateTime接受字符串,格式化好的格式存储在内部成员中,所以我们在用COleDateTime类的GetAsSystemTime函数,将内部时间格式转化为系统时间格式,函数的名称也可以看出这个意思。
然后我们可以发现,CTime是可以用系统时间来初始化的,这样就可以完成了一次字符串转为时间类型的过程。代码如下:
CTime GetTime(CString strTime)
{
COleDateTime oletime;
oletime.ParseDateTime(strTime);
SYSTEMTIME systime;
oletime.GetAsSystemTime(systime);
CTime mytime = CTime(systime);
return mytime;
}
CString strTime = _T("2016-5-26 18:57:00");
CTime myTime = GetTime(strTime);
时间格式包含有系统时间、统一格式时间、文件时间等等,但是只要得到了一种时间,就可以很方便的转换,基本上都可以通过系统之间来做中转。更多用法,等你去发现咯。
知道了格式化时间和将时间字符串转为CTime变量,基本上可以满足常用时间处理需求了。