小弟是VC新手,用的是经典的VC++60,用以下的方法获得当前的时间后,再给变量赋值
已经可以正确地将系统当前的时间进行显示,
例如2009-11-09 14:30:24,并可看到后面的秒位在跳动 现在想把这个当前的时间,在后台的文本文件中保存,却始终
显示奇怪的字符串,真是奇怪啊,试验了很多办法都不行,请高高手帮忙,
谢谢啊!!原码如下:
CTime time = CTime::GetCurrentTime();
int y = time.GetYear();
int mon = time.GetMonth();
int d = time.GetDay();
int h = time.GetHour();
int min = time.GetMinute();
int s = time.GetSecond();
CString sy, smon, sd, sh, smin, ss, sTime;
sy.Format("%d", y);
smon.Format("%d", mon);
sd.Format("%d", d);
if (h < 10) //使小时是双位
{
sh.Format("0%d", h);
}
else
{
sh.Format("%d", h);
}
if (min < 10) //使分钟是双位
{
smin.Format("0%d", min);
}
else
{
smin.Format("%d", min);
}
if (s < 10) //使秒是双位
{
ss.Format("0%d", s);
}
else
{
ss.Format("%d", s);
}sTime = sy + "-" +smon + "-" + sd + " " + sh + ":" + smin + ":" + ss;
//CString sTime0 = sh + ":" + smin + ":" + ss;
CString sTime0 = sh + smin + ss;
m_current_time = sTime0;//在变量中可正确显示当前时间,并可看到秒位在跳动
m_time[num]= smin;//这是仅仅显示当前的时间,即显示例如11:28:34中的28分但得到的txt文件中的时间是
序号1、当前时间0018076E 温度0℃ 阻值52.63 欧姆
若再次重新运行,例如当前的时间为例如11:30:34中的30分
得到的txt文件中的时间是
序号1、当前时间003862D0 温度0℃ 阻值52.59 欧姆 感觉毫无规律可言。。并且在界面中显示的数字(字符)却是对的。这是怎么回事呢??痛苦啊!!!!
已经可以正确地将系统当前的时间进行显示,
例如2009-11-09 14:30:24,并可看到后面的秒位在跳动 现在想把这个当前的时间,在后台的文本文件中保存,却始终
显示奇怪的字符串,真是奇怪啊,试验了很多办法都不行,请高高手帮忙,
谢谢啊!!原码如下:
CTime time = CTime::GetCurrentTime();
int y = time.GetYear();
int mon = time.GetMonth();
int d = time.GetDay();
int h = time.GetHour();
int min = time.GetMinute();
int s = time.GetSecond();
CString sy, smon, sd, sh, smin, ss, sTime;
sy.Format("%d", y);
smon.Format("%d", mon);
sd.Format("%d", d);
if (h < 10) //使小时是双位
{
sh.Format("0%d", h);
}
else
{
sh.Format("%d", h);
}
if (min < 10) //使分钟是双位
{
smin.Format("0%d", min);
}
else
{
smin.Format("%d", min);
}
if (s < 10) //使秒是双位
{
ss.Format("0%d", s);
}
else
{
ss.Format("%d", s);
}sTime = sy + "-" +smon + "-" + sd + " " + sh + ":" + smin + ":" + ss;
//CString sTime0 = sh + ":" + smin + ":" + ss;
CString sTime0 = sh + smin + ss;
m_current_time = sTime0;//在变量中可正确显示当前时间,并可看到秒位在跳动
m_time[num]= smin;//这是仅仅显示当前的时间,即显示例如11:28:34中的28分但得到的txt文件中的时间是
序号1、当前时间0018076E 温度0℃ 阻值52.63 欧姆
若再次重新运行,例如当前的时间为例如11:30:34中的30分
得到的txt文件中的时间是
序号1、当前时间003862D0 温度0℃ 阻值52.59 欧姆 感觉毫无规律可言。。并且在界面中显示的数字(字符)却是对的。这是怎么回事呢??痛苦啊!!!!
或者自定义一个时间的结构体,保存这个结构体
要注意你写入文件的是值还是指针值
谢谢楼上,,我获得的这个时间,是CString的格式,你的char strTime[40]
这个声明怕是不行啊
还有既然是存文件出问题,就应该把存文件部分的代码贴出来。
GetLocalTime(&systime);
CString strCurTime ;
strCurTime.Format("%d-%02d-%02d %02d:%02d:%02d" , systime.wYear , systime.wMonth , systime.wDay , systime.wHour , systime.wMinute , systime.wSecond);
::GetLocalTime(&time);
strTime.Format("%d年 %d月 %d日 %d时 %d分 %d秒",time.wYear,time.wMonth,time.wDay,time.wHour,time.wMinute,time.wSecond);
DzFile.WriteString (strTime );
随便给你个方法吧。
{
ofstream outtxt("d:\\current_data.txt"); //建立并打开text文本文件
for(i=0;i<=dada_num;i++)
{
outtxt<<"序号"<<i+1<<"、";
//outtxt<<"温度"<<b[i]<<"℃ ";
outtxt<<"当前时间"<<sTime0<< " ";
//sTime0是CString格式的字符串,再界面中可以正确显示当前的时间
//但在current_data.txt文件中,就是上面所说的奇怪的没有规律可言的Hex字符串
outtxt<<"温度"<<b[i+1]<<"℃ ";
outtxt<<endl; //换行
}
outtxt.close();
}建立后台文件的原码如此,请高手们帮帮忙啊,谢谢啊!!!
outtxt < <"当前时间" < <sTime0 < < " ";
保存CString字符串,既然得到的是没有规律可言的HEX字符串。那么思考,,是否支持用put(char data[0]),是否支持生成准确的char呢。发现支持。那么好,设法将CString格式的时间字符串,转换成char数组,char time_data[30]再将此char数组逐一保存再*。txt文件中,,,测试发现ok但是,每次的时间都是一样的,并不随时更新苦恼,,再查原因然后翻书,建立了时间数组结构体,让每处理中断1次,就把当前的时间再这个结构体中保存一次。然后,在txt文件中与取得的数据一起循环输出。呵呵咱虽是新手,,发现自己的确有编程的天赋,,呵呵