您的位置:首页 > 数据库

VC数据库开发日记5: CSTring和COleDateTime相互转化

2008-02-29 13:33 441 查看
记录集读到ACCESS数据库有时间字段的时,最终涉及到窗体显示的时候,总是会涉及到CString
这种变量,这次开发人事管理部分时也碰到了这样的问题。Ok , 开始:
CString COleDateTime
CString strCstr = “2007-10-11”;
COleVariantTime Vt;
Vt =strCstr ;
Vt.ChangeType(VT_DATE);
COleDateTime Data =Vt;
还有一点就是显示的问题,总不能把 05-12-2007 之类的格式显示在文本框上吧?估计很多人绝对不习惯,那就利用CString 的Fromat 函数了,的确强大!
如:
CString strJcrq = hrt.Jcrq.Format(“%Y-%m-%d”);
Y 是年,m是月,d是日,大小写也很重要,否则最终就变得怪怪的。 最终也是试出来的,MSDN也不是没查,
看了半天不是很懂,没有我需要的东西。好在CString 应该有自己的转化函数吧,
Format 这个函数最后起了作用可以显示成: 以CString 类型的“2007-10-15” 之类的形式。

看起来问题是解决了,但是忽然发现在读数据库表中,时间类型读出来是-variant_t 类型的,如果只是显示的话,不必把它转化成ColeDateTime,只需要:
CString strValue;
_variant_t var;

var = pRset->GetCollect((_variant_t)strZD);
if (var.vt != VT_NULL)
{
strValue = (LPCSTR)_bstr_t(var);
}
else if(var.vt != VT_EMPTY)
{
strValue = "";
}
else
{
strValue = "";
}

实际上strValue 就可以了,它能完全正确的显示时间。(解决这个花了我不少时间,有时合乎思维的也许不符合实际呢,上面这个完全没有中间的ColeDateTime,嘛反正之是显示数据。 )
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: