如题

解决方案 »

  1.   

    给段代码啊  COleDateTime::ParseDateTime 这个函数MSDFN上说可以转换12:10:00 这种形式的
    但我得到老是 8:00:00
      

  2.   

    CString strCString="2003-10-27 6:24:37"; //CString--->COleDateTime
    COleVariant vtime(strCString);
    vtime.ChangeType(VT_DATE);
    COleDateTime time4=vtime;//COleDataTime--->CTime
    SYSTEMTIME systime;
    VariantTimeToSystemTime(time4, &systime);
    CTime tm(systime);
      

  3.   

    我的strCString只有6:24:37这部分呢 ?先要自己 把2003-10-27 加上再变/
      

  4.   

    CString sTime = "12:10:00";
    COleDateTime dtTime;
    dtTime.ParseDateTime(sTime);SYSTEMTIME st;
    dtTime.GetAsSystemTime(st);
    CTime tTime(st);就可以了。
      

  5.   

    ParseDateTime函数可以识别以下格式的时间字符串:
    The lpszDate parameter can take a variety of formats. For example, the following strings contain acceptable date/time formats:"25 January 1996"
    "8:30:00"
    "20:30:00"
    "January 25, 1996 8:30:00"
    "8:30:00 Jan. 25, 1996"
    "1/25/1996 8:30:00" 所以,"12:10:00"是可以直接识别的。
      

  6.   

    鹦鹉大哥  罪过啊刚才没刷屏
    MSDN说CString sTime = "12:10:00"; 这种可以 
    但像CString sTime = "12:10:00";
    COleDateTime dtTime;
    dtTime.ParseDateTime(sTime);SYSTEMTIME st;
    dtTime.GetAsSystemTime(st);
    CTime tTime(st);  这样得到的  老是那个默认值  8:00:00啊
      

  7.   

    哦。对,是会有问题。原因是COleDateTime和CTime表达的年限范围不同。COleDateTime可以从100到9999,而CTime只能从1970到2038。因此,转换成SYSTEIM st后,需要将st的年份加上1970,使得st值对于CTime来说成为一个有效值,否则,CTime认为该st是异常的,所以CTime实际上是0,用Format看到的是08:00:00了。
    修改一下:
    CString sTime = "12:10:00";
    COleDateTime dtTime;
    dtTime.ParseDateTime(sTime);SYSTEMTIME st;
    dtTime.GetAsSystemTime(st);
    st.wYear = 1970;
    CTime tTime(st);
      

  8.   

    CTime CDXXX::StringToDate(CString date) /*字符串转编辑框日期型*/
    {
    if(date.IsEmpty())
    return NULL;
    if(date.GetLength()!=10)
    return NULL;
    date.TrimLeft();
    date.TrimRight();
    CString date_1=date.Left(4);
    int date_years_i=atoi(date_1);//得到年份/
    date=date.Right(5);
    date_1=date.Left(2);
    int date_month_i=atoi(date_1);//得到月份/
    date=date.Right(2);
    int date_day_i=atoi(date);   //得到日期/
    CTime time(date_years_i,date_month_i,date_day_i,0,0,0);

    ///}
    // catch(_com_error &e)
    /* {
    CString err;
    err.Format("日期时间转换错误\n",(char *)e.Description());
    MessageBox(err,"错误提示",MB_OK|MB_ICONINFORMATION);
    return false;
    }*/
    return time;
    }
    /*-----------------字符串转时间型*/
    CTime CDXXX::StringToTime(CString date) /*字符串转编辑框时间型*/
    {
    if(date.IsEmpty())
    return NULL;
    if(date.GetLength()!=8)
    return NULL;
    date.TrimLeft();
    date.TrimRight();
    CString date_1=date.Left(2);
    int time_hours_i=atoi(date_1);//得到小时/
    date=date.Right(5);
    date_1=date.Left(2);
    int time_min_i=atoi(date_1);//得到分钟/
    date=date.Right(2);
    int time_sec_i=atoi(date);//得到秒/
    CTime time(2005,5,17,time_hours_i,time_min_i,time_sec_i);

    ///}
    // catch(_com_error &e)
    /* {
    CString err;
    err.Format("日期时间转换错误\n",(char *)e.Description());
    MessageBox(err,"错误提示",MB_OK|MB_ICONINFORMATION);
    return false;
    }*/
    return time;
    }
      

  9.   

    happyparrot(快乐鹦鹉)讲的不错啊,替楼主谢谢你啊..