Qt:QDateTime


0、說明

提供時間日期的表達和相關函數。

QDateTime通過日期+時間來構造一個日期時間。它綜合了QDateQTime的所有特性。

它可以通過系統時鍾來獲取當前DateTime。它還提供了比較時間的方法和對時間進行加減運算的方法。

QDateTime可以分別通過本地時間UTC、UTC偏移時間、指定時區(通過QTimeZone類實現)來描述日期時間。這些時間間是相關的,例如,UTC偏移 +3600×8 秒 等同於 ISO標准標識 UTC+08:00,等同於 時區為CN/Beijing 的時間。

1)構造

一個QDateTime既可以直接通過傳入一個date和time進行構造,也可以調用如currentDateTime()、fromMSecsSinceEpoch()的靜態函數來進行構造。datetime可以通過setDate()、setTime()來進行設置,也可以直接通過setMSecsSinceEpoch()來用時間戳進行構造,也可以用fromString()來從一個String用相關的格式進行構造。

2)當前時間

QDateTime::currentDateTime()返回當前DateTimeQDateTime::currentDateTimeUtc()返回UTC下的當前時間

3)提取與設置

可以通過date()、time()來提取該DateTime中的Date與Time。同樣的信息可以通過在toString()中傳入指定格式來實現。

4)運算

addMSecs():加上毫秒

addSecs():秒

addDays():日

addMonths():月

addYears():年

daysTo():兩個DateTime間的天數

msecTo():兩個DateTime間的毫秒數

5)轉換

toTimeSpec():轉換為本地時間

toOffsetFromUtc():轉換為UTC偏移時間

toTimeZone():轉換為時區時間

timeSpec():存儲時間的相對時間規范

Qt::TimeZone timeZone():返回時區

注意事項

①沒有0年

只有-1與1年

1、模塊和加載項

Header: #include <QDateTime>
qmake: QT += core

2、構造

QDateTime(QDateTime other) 構造另一個QDateTime的副本
QDateTime(QDate date, QTime time, QTimeZone timeZone) 用指定的Date、Time、TimeZone構造DateTime
QDateTime(QDate date, QTime time, Qt::TimeSpec spec, int offsetSeconds)  
QDateTime(QDate date, QTime time, Qt::TimeSpec spec = Qt::LocalTime)  
QDateTime(QDate date) 用指定QDate構造QDateTime
QDateTime()  


3、靜態字段

enum class YearRange { First, Last } 年的范圍 
Constant Value Description
QDateTime::YearRange::First -292275056 The later parts of this year are representable
QDateTime::YearRange::Last +292278994 The earlier parts of this year are representable

5、靜態方法

返回值類型

方法

說明

QDateTime  currentDateTime() 當前本地時間
currentDateTimeUtc() 當前UTC時間 
qint64 currentMSecsSinceEpoch() 當前時間戳(毫秒)
currentSecsSinceEpoch() 當前時間戳(秒) 
QDateTime fromCFDate(CFDateRef date) 從一個CFDate構造QDateTime

fromMSecsSinceEpoch(qint64 msecs)

fromMSecsSinceEpoch(qint64 msecs, Qt::TimeSpec spec, int offsetSeconds = 0)

fromMSecsSinceEpoch(qint64 msecs, QTimeZone timeZone)

返回時間戳(毫秒)對應的QDateTime
fromNSDate(const NSDate *date) 從NSDate構造QDateTime

fromSecsSinceEpoch(qint64 secs, Qt::TimeSpec spec = Qt::LocalTime, int offsetSeconds = 0)

fromSecsSinceEpoch(qint64 secs, QTimeZone timeZone)

返回時間戳(秒)對應的QDateTime

fromString(QString string, Qt::DateFormat format = Qt::TextDate)

fromString(QString string, QString format)

fromString(QString string, QString format, QCalendar cal)

從QString用指定格式構造QDateTime

 

6、實例方法

返回值類型

方法

說明

QDateTime &

bool

bool

bool

bool

bool

bool

operator=(QDateTime other)

operator!=(QDateTime other)

operator<(QDateTime other)

operator<=(QDateTime other)

operator==(QDateTime other)

operator>(QDateTime other)

operator>=(QDateTime other)

賦值

 

 

比較兩個日期的大小

 

 

 

QDateTime

addDays(qint64 ndays)

addMSecs(qint64 msecs)

addMonths(int nmonths)

addSecs(qint64 s)

addYears(int nyears)

QDateTime加一定時間,得到新QDateTime。

如果參數是負數就表示減一定時間。

QDate

QTime

Qt::TimeSpec

QTimeZone

QString

date()

time()

timeSpec()

timeZone()

timeZoneAbbreviation()

提取QDateTime的相關信息

qint64

daysTo(QDateTime other

msecsTo(QDateTime other)

secsTo(QDateTime other)

兩個QDateTime間的間隔,單位分別是天、毫秒、秒
bool isDaylightTime()   是否是夏令時
bool   isNull() 當Date和Time都是null時返回true
bool   isValid()  
int  offsetFromUtc() UTC偏移,單位秒
void

 setDate(QDate date)

setMSecsSinceEpoch(qint64 msecs)

setOffsetFromUtc(int offsetSeconds)

setSecsSinceEpoch(qint64 secs)

setTime(QTime time)

setTimeSpec(Qt::TimeSpec spec)

setTimeZone(QTimeZone toZone)

設置QDateTime的相關信息
 void  swap(QDateTime &other) 互換兩個QDateTime的相關信息

CFDateRef

QDateTime

 qint64

NSDate *

QDateTime

qint64

QDateTime

QDateTime

QDateTime

 

 toCFDate()

toLocalTime()

toMSecsSinceEpoch()

toNSDate()

toOffsetFromUtc(int offsetSeconds)

toSecsSinceEpoch()

toTimeSpec(Qt::TimeSpec spec)

toTimeZone(QTimeZone timeZone)

toUTC()

把QDateTime轉換為對應的時間
QString

toString(QString format)

 toString(Qt::DateFormat format = Qt::TextDate)

toString(QString format, QCalendar cal)

返回該DateTime對應的QString,參數format指定了轉化的格式。

假設QDateTime是 21 May 2001 14:13:09.120

相關轉化格式為:

Format Result
dd.MM.yyyy 21.05.2001
ddd MMMM d yy Tue May 21 01
hh:mm:ss.zzz 14:13:09.120
hh:mm:ss.z 14:13:09.12
h:m:s ap 2:13:9 pm

如果DateTime非法,會返回一個空QString。

正如dd與ddd,打印時分別是21和Tue,不同個數的格式字符打印出的內容也不同,有興趣可以自行嘗試。

格式用到的標准是ISO 8601。

 

7、一些用法

1)獲取當前日期

QDateTime dt = QDateTime::currentDateTime();

2)轉換為String

dts = dt.toString("yyyy-MM-dd HH:mm:ss ddd");
//"2021-07-16 10:13:00 周五"

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM