MFC控制項(10): Date Time Picker

來源:互聯網
上載者:User

有些地方我們可能需要使用者輸入時間資訊.MFC裡面有個控制項Date Time Picker可以方便的實現該功能.發現MFC控制項資訊有些混亂,在ToolBox中叫Date Time Picker,在Properties頁面看到的就是Date-Time Control了,然後對應的類名又變成CDateTimeCtrl了. 當然還好沒有不同控制項名字比較類似,所以還不至於造成混淆.

說到時間我們想到的是年月日(一般叫作日期date),小時分鐘秒鐘(一般叫作時間time) .當然還有毫秒,世紀這些就不太常用了.

可以給Date-Time control做些不同的設定來選擇日期或者時間(不過不能同時在一個控制項中設定日期和時間,所以如果需要設定兩者的資訊必須用兩個控制項)

 

選擇年月日

//從toolbox中拖Date Time Picker到頁面,properties中的屬性都不變,Format是預設的Short Date, Use Spin Control為 False

//綁定一個變數

CDateTimeCtrl m_dateCtrl;

DDX_Control(pDX, IDC_DATETIMEPICKER1, m_dateCtrl);

 

//預設的顯示格式是: 月/日/年.如果你覺得看不順眼,想變成年/月/日可以這樣設定

//反正yyyy代表年,MM代表月,dd代表日,順序你可以順便調.另外大小寫不能換是固定的.這裡月這所以整成MM是為了和表示分鐘的mm區分.

 

m_dateCtrl.SetFormat(_T("yyyy/MM/dd"));

 

//開啟頁面後發現控制項裡面選日期真的很方便.現在接下來就是要怎麼在代碼裡面擷取那些時間資訊.

//我們可以用類CTime (一個ATL中的類,ATL也跟MFC一樣是個類庫.不過反正都整合到VS中,我們用的時候不用去區分是誰的類了)

 

CTime m_date;  //別看名字以後它只有時間的資訊,實際上它可以同時儲存日期和時間資訊

m_dateCtrl.GetTime(m_date); //把控制項裡的時間資訊弄過來了啊.接下來用著就方便了

int year = m_date.GetYear();

int month = m_date.GetMonth();

int day = m_date.GetDay();

 

 

選擇時間

//同樣是用控制項Date Time Picker,只不過屬性要改下.把Properites中的屬性Format改成Time, User Spin Control為True.

//當然你也可以不改Format,在代碼中用SetFormat去設定也一樣.

CDateTimeCtrl m_timeCtrl;

DDX_Control(pDX, IDC_DATETIMEPICKER2, m_timeCtrl);

 

//時間預設顯示是跟你作業系統上的時間設定格式一樣.有時可能只顯示小時和分鐘,沒有秒.你可以在代碼中設定顯示秒

m_timeCtrl.SetFormat(_T("hh:mm:sstt"));

 

擷取時間資訊

CTime m_time;

m_timeCtrl.GetTime(m_time);

int hour = m_time.GetHour();

int minute= m_time.GetMinute();

int second = m_time.GetSecond();

 

日期時間的運算

如果你想把日期和時間合并起來放到新的CTime中也很簡單

CTime m_dateTime(year , month ....) ;//傳6個參數進去就行了.

CTime是比較老的類庫中的類,能表示的範圍較少,而類似的類COleDateTime ,跟CTime類似,你也可以傳6個參數構造它就行.

 另外還有個有用的函數是擷取目前時間的.

CTime time1 = CTime::GetCurrentTime();

 

另外我們可以對日期和時間做加減操作

例如

CTimeSpan timeSpan  = m_date1 - m_date2;

 

如果是COleDateTime則加減結果對應的是COleDateTimeSpan類型

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.