小弟是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 欧姆  感觉毫无规律可言。。并且在界面中显示的数字(字符)却是对的。这是怎么回事呢??痛苦啊!!!!

解决方案 »

  1.   

    时间用char strTime[40]这样来保存
    或者自定义一个时间的结构体,保存这个结构体
    要注意你写入文件的是值还是指针值
      

  2.   

    =========
    谢谢楼上,,我获得的这个时间,是CString的格式,你的char strTime[40]
    这个声明怕是不行啊
      

  3.   

    楼主的格式化时间的方法真是幽默,很简单CTime类的Format函数一句代码就好,还写了这么老长。
    还有既然是存文件出问题,就应该把存文件部分的代码贴出来。
      

  4.   

    新手的代码...SYSTEMTIME systime;
    GetLocalTime(&systime);
    CString strCurTime ;
    strCurTime.Format("%d-%02d-%02d %02d:%02d:%02d" , systime.wYear , systime.wMonth , systime.wDay , systime.wHour , systime.wMinute , systime.wSecond);
      

  5.   

    SYSTEMTIME time;
    ::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 );
    随便给你个方法吧。
      

  6.   

    void CreateTextFile(float data[],CString m_time[])
    {
     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();
    }建立后台文件的原码如此,请高手们帮帮忙啊,谢谢啊!!!
      

  7.   

    直接可以格式化cstring输出时间
      

  8.   

    经过咱多日的思索,这个问题终于解决啦也在此与dx们分享分享,不能只是想坛子索取,而不贡献嘛首先想到,既然
    outtxt < <"当前时间" < <sTime0 < < "    "; 
    保存CString字符串,既然得到的是没有规律可言的HEX字符串。那么思考,,是否支持用put(char data[0]),是否支持生成准确的char呢。发现支持。那么好,设法将CString格式的时间字符串,转换成char数组,char time_data[30]再将此char数组逐一保存再*。txt文件中,,,测试发现ok但是,每次的时间都是一样的,并不随时更新苦恼,,再查原因然后翻书,建立了时间数组结构体,让每处理中断1次,就把当前的时间再这个结构体中保存一次。然后,在txt文件中与取得的数据一起循环输出。呵呵咱虽是新手,,发现自己的确有编程的天赋,,呵呵