1. 程式人生 > >linux 下Qt 如何修改系統時間

linux 下Qt 如何修改系統時間

Qt 提供日期時間的類有 QDate QTime 和QDateTime,這三個類。

一、獲取系統時間

可以通過三個靜態函式來獲取
1.QDate::currentDate() 來獲取當前系統的日期
2.QDate::currentTime()來獲取當前系統的時間
3.QDateTime::currentTime()來獲取當前系統的日期和時間。

二、設定系統時間

在linux 上可以使用date命令來設定系統設定時間,例如
date -s “20181025 17:19:23”
這樣就可以把當前的系統時間設定成2018年10月25分17時19分23秒了。
但是如何在Qt用使用函式來設定系統時間呢,很遺憾的是Qt所提供的這三個類QDate,QTime ,QDateTime並沒有提供相應的函數借口來給開發人員來設定系統的時間。所以我們在Qt中想要設定系統時間,只有通過date命令來設定了,例如:

char * cmd = date -s "20181025 17:19:23" 
system(cmd);

三、將系統時鐘同步到硬體時鐘

在linux系統上,時鐘分為系統時鐘和硬體時鐘兩種。
硬體時鐘是依靠BIOS電池來維持技術,而我們平時開發的時候基本上用到的是系統時鐘,如一些函式,一些類,都是使用系統時鐘的。當我們系統重啟後,硬體時鐘就會自動同步到系統時鐘(硬體時鐘寫入到系統時鐘),正因為這樣,我們的系統時鐘才能保持連續性(比如你電腦關機一段時間後再開機,電腦顯示的時間,還是正確的)。
那麼,當我們設定了系統時鐘後,系統關機一段時間,然後在重新開機,你會發現系統顯示的時間並不正確了,這是因為你在設定完系統時鐘後,沒有把系統時鐘同步到硬體時鐘上,所以系統在重啟後,在讀取硬體時鐘的時候,還是讀取到以前的那個硬體時鐘,所以才導致系統時間顯示不正確。
所以,我們每一次設定完系統時鐘後,都要進行系統時鐘同步到硬體時鐘的操作(系統時鐘寫入到硬體時鐘)

hwclock -w  // 執行命令

這樣時間就設定好了