TCHAR szItem[MAX_PATH] = {(0)};
 TCHAR szTiemEnd[MAX_PATH] = {(0)};
 wsprintf(szItem,_T("%04u-%02u-%02u %02u:%02u:%02u"),
 pRec->m_tmBegin.wYear,pRec->m_tmBegin.wMonth,pRec->m_tmBegin.wDay,
 pRec->m_tmBegin.wHour,pRec->m_tmBegin.wMinute,pRec->m_tmBegin.wSecond);
 wsprintf(szTiemEnd,_T("%04u-%02u-%02u %02u:%02u:%02u"),
 pRec->m_tmEnd.wYear,pRec->m_tmEnd.wMonth,pRec->m_tmEnd.wDay,
 pRec->m_tmEnd.wHour,pRec->m_tmEnd.wMinute,pRec->m_tmEnd.wSecond);
 DemoInfo("Messile:%s, begTime:%s, endTime:%s, Desc:%s, Type:%s",pRec->m_szCamera, szItem, szTiemEnd, pRec->m_szRecDesc, pRec->m_szRecType);
我想把时间格式化后通过DemoInfo定向到log里去,但是怎么begTime和endTime运行结果都不是2012-04-18 16:13:25的形式,而是两个整数2啊?log里面的结果为:
Messile:白杨-III, begTime:2, endTime:2, Desc:, Type:1
怎么回事啊?

解决方案 »

  1.   

    可能是UNICODE的问题,DemoInfo是什么?
      

  2.   

    #define DemoInfo(format, ...)      hlog_format(HLOG_LEVEL_INFO, "LakerDemo", "<%d>\t<%s>,"format, __LINE__, __FUNCTION__, ##__VA_ARGS__)是这样定义的
      

  3.   

    你可以先断点看一下变量的内容,如果内容没错,可能是DemoInfo宏的问题
      

  4.   

    wsprintf 换成 _stprintf_s 试试看
      

  5.   

    感觉楼上说得有点道理DemoInfo宏里面格式化类型应该要和 pRec->m_szCamera, szItem等...相同吧
      

  6.   

    我一般这样做:
    CString str;
    str.Format(L"%d-%02d-%02d",year,month,day);
    这是Unicode。CString类很好。
    如果需要转换成ascii,可以写一个CStr类,通过WideCharToMultiByte函数完成。