我發現奇怪的行爲在Qt 4.8的QDateTime
關於fromMSecsSinceEpoch
。下面的代碼不會產生結果我希望:QDateTime的有效範圍:: fromMSecsSinceEpoch
assert(
QDateTime::fromMSecsSinceEpoch(
std::numeric_limits<qint64>::max()
).isValid() == true
);
assert(
QDateTime::fromMSecsSinceEpoch(
std::numeric_limits<qint64>::max()
).toMSecsSinceEpoch() == std::numeric_limits<qint64>::max()
);
雖然第一個斷言是真的,第二個失敗。 Qt返回的結果是-210866773624193
。 的doc爲QDateTime::fromMSecsSinceEpoch(qint64 msecs)
明確規定:
有對於處在外QDateTime的有效範圍內,負和正毫秒可能的值。這個函數的行爲對於這些值是未定義的。
但是,沒有任何關於有效範圍的明確聲明。
我發現這個Qt bug report關於Qt 5.5.1,5.6.0和5.7.0 Beta中的時區問題。 我不確定這是否是一個類似的錯誤,或者我提供給QDateTime::fromMSecsSinceEpoch(qint64 msecs)
的值是無效的。
什麼是(或者說應該是)可以傳遞給該函數的最大值併產生正確的行爲?
有效日期_The範圍是從1月2日,4713 BCE,到某個時候在今年的1 100 CE_ – Danh
,我讀了,但它不給出一個確切值 – sigy
文檔沒有給出一個確切的數值,這是附近某處'11'000'000 * 365 * 3600 * 1000' – Danh