形如“2008-08-08 10:23:12”的字符串,将其中的日期(年月日)和时间(小时分钟秒)取出来放到两个日期时间控件中,当然这两个控件一个表示日期一个表示时间
 
 如下代码:
                  sscanf(sTime, "%d-%d-%d %d:%d:%d", &nYear, &nMonth, &nDay, &nHour, &nMin, &nSec); //sTime CString类型 形如“2008-08-08 10:23:12”
CString tYear;
tYear.Format("%d",nYear);
MessageBox(tYear);
CTime tDate(nYear, nMonth, nDay, 0, 0, 0);
CTime tTime(nYear, nMonth, nDay, nHour, nMin, nSec);
((CDateTimeCtrl*)GetDlgItem(IDC_DATETIMEPICKER_DATE))->SetTime(&tDate);
((CDateTimeCtrl*)GetDlgItem(IDC_DATETIMEPICKER_TIME))->SetTime(&tTime);     以上代码在XP系统下正常,但是在Vista系统下就不行,我意思是指在Vista系统下,这两个控件并没有显示正确的日期时间。
  为什么会这样呢????

解决方案 »

  1.   

    没用过Vista系统
    所以随便猜猜是不是这两个控件要设置时间属性和日期属性 
      

  2.   

    刚刚测试发现,如果用指定的日期,
    如下代码,则在vista系统下正常没问题        
            CTime tDate(2009, 10, 10, 0, 0, 0);
            CTime tTime(2009, 10, 10, 11, 22, 33);
            ((CDateTimeCtrl*)GetDlgItem(IDC_DATETIMEPICKER_DATE))->SetTime(&tDate);
            ((CDateTimeCtrl*)GetDlgItem(IDC_DATETIMEPICKER_TIME))->SetTime(&tTime);
    但是代码在vista下面就是有问题了 
             CString sTime = "2009-10-10 11:22:33";
    int nYear, nMonth, nDay, nHour, nMin, nSec;
             sscanf(sTime, "%d-%d-%d %d:%d:%d", &nYear, &nMonth, &nDay, &nHour, &nMin, &nSec); //sTime CString类型 形如“2008-08-08 10:23:12”
             CTime tDate(nYear, nMonth, nDay, 0, 0, 0);
            CTime tTime(nYear, nMonth, nDay, nHour, nMin, nSec);
            ((CDateTimeCtrl*)GetDlgItem(IDC_DATETIMEPICKER_DATE))->SetTime(&tDate);
            ((CDateTimeCtrl*)GetDlgItem(IDC_DATETIMEPICKER_TIME))->SetTime(&tTime);为什么会这样呢????