Qt:獲取日期和時間

水工君發表於2019-04-26

前言

  一般而言,作業系統(Windows/Linux/Mac)的核心函式都會給出了日期時間的相關係統庫函式,Qt在此基礎上進行了封裝,提供了獲取時間和日期的3個相關類——QDateTime、QDate、QTime,使其在Qt內部空間之間的使用更加便捷。

QDateTime獲取日期和時間

  QDateTime顧名思義,獲取日期和時間,呼叫靜態成員函式可直接獲取字串值,同時可以控制顯示格式:

	QDateTime dateTime(QDateTime::currentDateTime());
	QString qStr = dateTime.toString("yyy-MM-dd hh:mm::ss ddd");

  顯示效果如下:
在這裡插入圖片描述
  其中,控制字串的格式如下表:

格式 備註
d 天數,範圍1~31
dd 天數,範圍01~31,字首自動補一位零
ddd 星期天數縮寫,以本地作業系統為準(如,漢字的週一到週日,英文的Mon.到Sun.)
dddd 星期天數全程,以本地作業系統為準(如,漢字的星期一到星期日,英文的Monday到Sunday)
M 月數,範圍1~12
MM 月數,範圍01~12,自動補一位零
MMM 月數名稱縮寫,預設本地作業系統值(如,漢字的1月到12月,英文的Ja)
MMMM 月數名稱全程,預設本地作業系統值(如,漢字的一月到十二月)
yy 年份的後兩位,範圍00~99
yyyy 年份的四位全稱
h 沒有補零的小時數,範圍0~23或1 ~12
hh 自動補零的小時數,範圍00~23或01 ~12
H 沒有補零的小時數,範圍0~23(即便12小時制也是如此)
HH 自動補零的小時數,範圍0~23(即便12小時制也是如此)
m 分鐘數,範圍0~59
mm 自動補零分鐘數,範圍00~59
s 秒鐘數,範圍0~59
ss 自動補零秒鐘數,範圍00~59
z 秒鐘的小數部分(毫秒),精確範圍 0-999
zzz 秒鐘的小數部分,自動補零3位,範圍000-999
AP(A) 使用12小時制,顯示AM/PM
ap(a) 使用12小時制,顯示am/pm
t 時區

  以上任意欄位可以隨機排序,沒有任何限制,但是要注意有大小寫之分。

QDate獲取日期

  QDate顧名思義,即獲取日期。呼叫靜態成員函式可直接獲取日期年月日的整型值

	QDate date(QDate::currentDate());
	int year = date.year();
	int month = date.month();
	int day = date.day();

QTime獲取時間

  QDate顧名思義,即獲取時間。呼叫靜態成員函式可直接獲取時間時分秒的整型值

	QTime time(QTime::currentTime());
	int hour = time.hour();
	int minute = time.minute();
	int second = time.second();

總結

  QDateTime、QDate、QTime的強大不止於此,Qt官方提供了各種各種基於日期和時間的操作,如果感興趣的話,可以從官方API或者原始碼的角度去學習和解讀,在此不再累述。

相關文章