CString,char,int,COleDateTime,CTime,time_t之间的相互转换

在IT领域的软件开发,尤其是基于Microsoft Visual C++(VC6.0)的数据库应用程序中,数据类型之间的转换是一项常见的需求。本文将详细探讨CString、char、int、COleDateTime、CTime、time_t等类型之间的相互转换方法,这对于构建高效且兼容性强的应用程序至关重要。 ### CString与char之间的转换 CString是Visual C++中用于处理字符串的一个类,它提供了丰富的字符串操作功能。而char类型的数组则是C语言中的传统字符串表示方式。两者之间的转换可以通过以下方式进行: 1. **CString到char**:可以使用`LPCTSTR`或`LPSTR`类型的指针来获取CString内部的char指针,然后通过`strcpy`函数拷贝到目标char数组。 ```cpp CString strCString = "Hello, World!"; char strChar[256]; strcpy(strChar, (LPCTSTR)strCString); ``` 2. **char到CString**:可以直接使用CString的构造函数将char数组转换为CString对象。 ```cpp char strChar[] = "Hello, World!"; CString strCString(strChar); ``` ### COleDateTime与CTime之间的转换 COleDateTime和CTime都是用来处理日期时间的类,但它们基于不同的时间表示方式。COleDateTime使用OLE自动化日期格式,而CTime基于本地系统时间格式。 1. **COleDateTime到CTime**:首先将COleDateTime转换为SYSTEMTIME结构,然后使用SYSTEMTIME构造一个CTime对象。 ```cpp COleDateTime oleDate(1977, 4, 16, 2, 2, 2); SYSTEMTIME systime; oleDate.GetSystemTime(&systime); CTime time(systime); ``` 2. **CTime到COleDateTime**:可以先将CTime转换为SYSTEMTIME,再由SYSTEMTIME转换为COleDateTime。 ```cpp CTime ctime(__TIMESTAMP__); SYSTEMTIME systime; ctime.GetAsSystemTime(&systime); COleDateTime oleDate(systime); ``` ### int与时间类型之间的转换 int类型通常用于表示时间戳,即从某一固定时间点(如1970年1月1日0时0分0秒)开始的秒数。将int类型的时间戳转换为日期时间类型,或反之,涉及到时间单位的转换。 1. **int到COleDateTime**:可以先将int类型的时间戳转换为time_t类型,再使用`LocalTime`或`SystemTimeToFileTime`等函数将其转换为SYSTEMTIME,最后使用SYSTEMTIME构造COleDateTime对象。 ```cpp int timestamp = 1609459200; // 2021-01-01 00:00:00 time_t t = (time_t)timestamp; SYSTEMTIME systime; localtime_s(&systime, &t); COleDateTime oleDate(systime); ``` 2. **COleDateTime到int**:反向操作则需要先将COleDateTime转换为SYSTEMTIME,再使用`mktime`或`FileTimeToSystemTime`等函数转换为time_t类型,最后转换为int。 ```cpp COleDateTime oleDate = COleDateTime::GetCurrentTime(); SYSTEMTIME systime; oleDate.GetSystemTime(&systime); time_t t; mktime(&systime); int timestamp = (int)t; ``` 以上所述的转换方法在实际的数据库应用程序开发中非常实用,能够帮助开发者灵活地在不同数据类型之间进行数据处理和存储。理解并掌握这些转换技巧,对于提升软件的性能和可靠性具有重要意义。















。。。
while(!m_rec->SSTEOF)
{
var=m_rec->GetCollect("password");
if(var.vt!=NULL)
{
pass=(LPCSTR)_bstr_t(var);
if(pass.Compare(m_Pass)==0)
{
var=m_rec->GetCollect("level");
if(var.vt!=NULL)
{
CString strlevel=(LPCSTR)_bstr_t(var);
int level=atoi(strlevel);
SetOperLeval(level);
}
。。。。
不只到,反正就行了,感谢你的帮助,要是有后遗症还会用你的方法的
来源: http://www.programbbs.com/bbs/view20-5483-1.htm
COleDateTimeoleDate=COleDateTime::GetCurrentTime();
_variant_tvtFld;
vtFld.vt=VT_DATE;
vtFld.date=oleDate;
pRecordSet4->PutCollect("date",vtFld);
读时间值
temp=(char*)TheValue;
COleVariantvtime(temp);
vtime.ChangeType(VT_DATE);
COleDateTimetime4=vtime;//读出的是COleDateTime
用下面的方法转换
COleDateTimetime1(1977,4,16,2,2,2);//COleDataTime--->CTime
SYSTEMTIMEsystime;
VariantTimeToSystemTime(time1,&systime);
CTimetm(systime);
http://www.mscto.com
由于Time_t类型是Longint(32bit),TDatetime为Double(64bit)
CString,char*,int,COleDateTime,CTime,time_t之间的相互转换【转】2007-12-22 08:47获取当前时间。
datetime = COleDateTime::GetCurrentTime();
CTime和COleDateTime具有几乎同样的功能。
与CTime相比, COleDateTime的优点在于它支持DWORD变量。
COleDateTime使用的位数是双浮点的两倍,既然CTime只是简单地计算从1970年1月1日之后经过的秒数,所以到了2 0 3 7年它将达到4 2 9 4 9 6 7 2 9 5,从而不能再使用。
//CString--->COleDateTime
COleVariant vtime(strCString);COleDateTime time4=vtime;
//CTime--->time_t
COleDateTime time3(time2);
//time_t--->COleDateTime.
剩余5页未读,继续阅读

- 粉丝: 38
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 实验室管理系统—C语言.doc
- 系统集成项目管理工程师考试知识点.docx
- 工程项目管理作业必做第二次.doc
- 数据库应用技术作业及答案.doc
- 2023年微机原理与接口技术试新版题库含答案.doc
- 汽配城网络营销策划书.doc
- 五步快速启动网络营销.pptx
- 学习公路工程项目管理的心得体会.docx
- 天英网络营销学院告诉您学习SEO的重要性.pptx
- 《新编计算机应用基础教程》第4章:电子表格Excel-2003的使用课件.ppt
- 基于51单片机的家用温湿度语音播报系统设计.doc
- 计量经济学分析步骤及软件应用概述.pptx
- 可视化流程式开放源代码云计算快速开发平台WorkMake快速入门.pdf
- 基于物联网技术的公交场站安全监管系统.doc
- 电子CAD课程设计报告.docx
- 学习]网络营销服务报价提案.ppt



- 1
- 2
前往页