2015-09-09 38 views
0

我的代碼看起來像這樣爲什麼我會得到無效的QDateTime對象?

std::string date = "04/05/2015 02:07"; 
std::string format = "MM/dd/yyyy HH:mm"; 

QDateTime dateTime = QDateTime::fromString(date.c_str(), format.c_str()); 

bool isItValid = dateTime.isValid(); 

這是一個功能我的一部分,但我縮小了問題的日期明確該值。執行後,isItValidfalse。爲什麼這不是一個有效的日期?

但是,如果我嘗試

bool isItValid = dateTime.date().isValid() && dateTime.time().isValid(); 

值爲true。

任何人都可以指出那天有什麼問題嗎?我錯過了什麼?

回答

0

isValid()的(http://doc.qt.io/qt-5/qdatetime.html#isValid)的documentatation說:

返回true,如果這兩個日期和時間是有效的,他們是 在目前的Qt :: TIMESPEC有效,否則返回false。

如果TIMESPEC()是Qt的::本地時間或Qt的::時區,然後日期和時間 檢查,看看他們是否在標準時間下降到日光 時間的過渡時間,即如果過渡是在凌晨2點並且時鐘 前進到凌晨3點,然後從02:00:00到02:59:59.999的時間被認爲是無效的 。

所以它似乎是你錯過的Qt :: TimeSpec。

+0

我試着檢查'dateTime.timeSpec()'的值打印到控制檯,但沒有出現。另外,我不明白這個例子,文檔提供,你能幫我理解嗎?是否有些日期總是無效或什麼? – BRabbit27

+0

對我而言,兩者均使用您提供的代碼有效。你的'timespec()'是什麼?我的是0,所以'Qt :: LocalTime'。 – Gombat

相關問題