如何把char * 的字符串日期转换成time_t类型?
如 "2/28/2006 13:1:30"

解决方案 »

  1.   

    char * date = "2/28/2006 13:1:30";

    COleDateTime dt;

    if ( dt.ParseDateTime(date) )
    {

    cout << (LPCSTR)dt.Format() << endl;

    CTime t ( dt.GetYear(), dt.GetMonth(), dt.GetDay(), dt.GetHour(), dt.GetMinute(), dt.GetSecond() ); cout << t.GetYear() << endl;
    }
      

  2.   

    time_t t1 = t.GetTime();
      

  3.   

    如果不用MFC,怎么做?因为我现在做的这个项目不能用MFC
      

  4.   

    可以. 该函数para参数必须为yyyymmddhhmiss类型, 例如20060223131313
    //返回time_t
    int diffTime (char para[], int n)
    {  
    char s_time[128], s_sec[3], s_min[3], s_hour[3],
    s_day[3], s_mon[3], s_year[5];
    struct tm ptr;
    time_t lt;

    strncpy (s_year, para, 4);
    strncpy (s_mon, &para[4], 2);
    strncpy (s_day, &para[6], 2);
    strncpy (s_hour, &para[8], 2);
    strncpy (s_min, &para[10], 2);
    strncpy (s_sec, &para[12], 2);
    ptr.tm_sec = atoi (s_sec);
    ptr.tm_min = atoi (s_min);
    ptr.tm_hour = atoi (s_hour);
    ptr.tm_mday = atoi (s_day);
    ptr.tm_mon = atoi (s_mon) -1;
    ptr.tm_year = atoi (s_year) - 1900;

    lt = mktime (&ptr) + n;
    ptr = *localtime (&lt);
    sprintf (s_time, "%2d%02d%02d%02d%02d%02d", ptr.tm_year + 1900, ptr.tm_mon + 1,
    ptr.tm_mday, ptr.tm_hour, ptr.tm_min, ptr.tm_sec);
    strcpy (para, s_time);
    return lt;
    }
      

  5.   

    /*=========================================================================
    函数说明:转化字符串到时间
    ============================================================================*/
    time_t GetTimeFromChar( CString szDay, CString szTime )
    {
    CString strDay = szDay;
    CString strTime = szTime;

    tm stTime;
        ///////////////日期///////////////////////
    stTime.tm_year  = (atoi)(strDay.Left( strDay.Find( '-' )) ) - 1900;

    strDay.Delete( 0,  strDay.Find( '-' )+1 );

    stTime.tm_mon = (atoi)(strDay.Left( strDay.Find( '-' )) ) - 1;


    strDay.Delete( 0,  strDay.Find( '-' ) + 1 );

    stTime.tm_mday = atoi( strDay );

        ////////////////时间////////////////////////
    stTime.tm_hour  = (atoi)(strTime.Left( strTime.Find( ':' )) );

    strTime.Delete( 0,  strTime.Find( ':' )+1 );

    stTime.tm_min = (atoi)(strTime.Left( strTime.Find( ':' )) );


    strTime.Delete( 0,  strTime.Find( ':' ) + 1 );

    stTime.tm_sec = atoi( strTime );


    return mktime( &stTime );

    }