我已经得到一个结构,里面的数据分别为{2008;8;28;13;28,5},分别对应的是日期、时间,现在想把这些转化为2008-08-28换行13:28:05
请问有什么简便的办法没有

解决方案 »

  1.   


    #include "stdafx.h"
    #include <stdlib.h> typedef struct tagMyTime
    {
    int iYear;
    int iMonth;
    int iDay;
    int iHour;
    int iMinute;
    int iSecond;
    }MyTime;//格式化时间
    char* FormatTime(MyTime time);int main(int argc, char* argv[])
    {
    MyTime mytime = {2008, 8, 23, 8, 22, 21};
    char* szTime = new char[sizeof(mytime) + 1];
    szTime = FormatTime(mytime);
    printf("%s", szTime);
    getchar();
    return 0;
    }char* FormatTime(MyTime time)
    {
    char* pszTime;
    pszTime = new char[sizeof(time) + 1];
    char temp[10]; //中间辅助变量
    //格式化 年
    itoa(time.iYear, temp, 10);
    strcpy(pszTime, temp);
    strcat(pszTime, "-");
    //格式化 月
    itoa(time.iMonth, temp, 10);
    strcat(pszTime, temp);
    strcat(pszTime, "-");
    //格式化 日
    itoa(time.iDay, temp, 10);
    strcat(pszTime, temp);
    strcat(pszTime, "\n");
    //格式化 小时
    itoa(time.iHour, temp, 10);
    strcat(pszTime, temp);
    strcat(pszTime, ":");
    //格式化 分
    itoa(time.iMinute, temp, 10);
    strcat(pszTime, temp);
    strcat(pszTime, ":");
    //格式化 秒
    itoa(time.iSecond, temp, 10);
    strcat(pszTime, temp);
    strcat(pszTime, "\0"); return pszTime;
    }
      

  2.   

    可以用CString::Format();方法。
    如:
    CString strTime;
    strTime.Format(_T("%d-%d-%d\n%d:%d:%d"), ...);
    类似这种格式,类型随你结构定。
      

  3.   

    已经用format(_T("%d-%.2d..."))之类的搞定了   %.2d能用零补齐
      

  4.   

    CString str;
    str.Format("%4d-%02d-%02d\n%02d:%02d:%02d");