本帖最后由 qq496683952 于 2009-08-03 11:11:19 编辑

解决方案 »

  1.   

    MSDN上查看 CMonthCalCtrl 有详细的说明和例子
      

  2.   

    VC好像不支持连等sysTime.wHour = sysTime.wMinute = sysTime.wSecond = sysTime.wMilliseconds = 0; 
    还有你用m_CtrlMonthCal.GetCurSel得到了日期和时间
    为什么还要用CTime在定义一下呢,应该可以直接使用systemtime了吧
      

  3.   

    sysTime.wHour = sysTime.wMinute = sysTime.wSecond = sysTime.wMilliseconds = 0; 时分秒不都被你设成0了吗
      

  4.   

    是为了使用Format.
    sysTime 无法直接调用Format。
    vc++是支持sysTime.wHour = sysTime.wMinute = sysTime.wSecond = sysTime.wMilliseconds = 0;的。
      

  5.   

    刚用debug跟踪调试了下。发下了问题。
    当选择今天的日期的时候sysTime的数据时正确的日期及时间。
    但是选择其他日期时,sysTime的数据出现了错误。
    具体如下:
    我若选择2009-08-02
    sysTime各个参数的数据如下:
    wYear         2009
    WMouth        8
    wDayofweek    0
    wDay          2
    wHour         18464
    wMinute       24397
    wSecond       64328

    wMilliseconds 18
    当数据传送给l_time后,数据为1317140948
    l_time在传送给strTime时候就出现了错误
    数据装换后就变成了2011-09-28 00:29:28
    所以问题应该在数据获取时候的时分秒的获取上面。
    各位帮帮忙,看如何修改才能获得正确的时分秒(我的程序的是想获得当前的时分秒),谢谢了。
      

  6.   

    解决方法如下:
    SYSTEMTIME sysTime; 
    m_CtrlMonthCal.GetCurSel(&sysTime); 
    sysTime.wHour = sysTime.wMinute = sysTime.wSecond = sysTime.wMilliseconds = 0; 
    CTime l_time(sysTime); 
    CString strTime = l_time.Format("%Y-%m-%d %H:%M:%S"); 
    SetDlgItemText(IDC_TIME_EDIT, strTime); 
    UpdateData(FALSE); 
    这样修改后最后的数据时2009-08-02 00:00:00
    时分秒有用户手动设置。
    当然有更好的方法--自己写一个日历控件,中间加入一个时钟就能解决时分秒选择的问题。
    这种解决方式留作下次软件更新使用。呵呵,这次时间有点紧。
    就此结贴。
      

  7.   

    我刚也用过这个控件,不过我的sysTime用的类型是CTime,没遇到你的问题。
      

  8.   

    好好学习
      
    *****************************************************************************
    欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码) http://feiyun0112.cnblogs.com/
      

  9.   

    又试了几次,还是没问题
    不管是Month Calendar控件 还是 Date time Pocker