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页未读,继续阅读
- 粉丝: 35
- 资源: 6
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 本资源库是关于“Java Collection Framework API”的参考资料,是 Java 开发社区的重要贡献,旨在提供有关 Java 语言学院 API 的实践示例和递归教育关系 .zip
- 插件: e2eFood.dll
- 打造最强的Java安全研究与安全开发面试题库,帮助师傅们找到满意的工作.zip
- (源码)基于Spark的实时用户行为分析系统.zip
- (源码)基于Spring Boot和Vue的个人博客后台管理系统.zip
- 将流行的 ruby faker gem 引入 Java.zip
- (源码)基于C#和ArcGIS Engine的房屋管理系统.zip
- (源码)基于C语言的Haribote操作系统项目.zip
- (源码)基于Spring Boot框架的秒杀系统.zip
- (源码)基于Qt框架的待办事项管理系统.zip
- 1
- 2
前往页