1. 程式人生 > 其它 >Qt 一些日期格式轉換不精確

Qt 一些日期格式轉換不精確

1、 Qt 時間戳轉換不準確的問題

  • 時間格式為 "M/d/yy" "d/M/yy" "yy-M-d" "MM-dd-yy" "d-MMM-yy" "MMM.d,yy" "MMM-yy" 的字串在呼叫 daysFromDateString() 進行時間的轉換時,往往轉換不精確的時間,例如 “21-7-21” 的年月日在呼叫 qt 的 Qdate::daysFromDateString() 進行時間戳的轉換時,就會轉換成 1921-01-01 等錯誤時間
  • 原因這是 qt 自身的識別與轉換問題。
  • 歡迎掃碼回覆「排版」加入推文群

2、解決方法

  • 對輸入的字串轉換成的時間戳進行判斷與比較(與一個實世紀的中點50年為比較點),如果字串的時間戳低於1950年1月1日的時間戳,字串轉換的時間戳就需要往前加上 100 年的時間戳進行矯正。具體程式碼實現:
QDateTimedivideDates=QDateTime(QDate(1950,01,01));//1950.01.01的分界時間戳
QDateTimedatesCompare=QDateTime(QDate(1899,12,30));//以edStartDate為起始點的時間戳
qint64dtCompare=datesCompare.secsTo(divideDates);//1950.01.01轉換成秒數的時間戳
if(dt<dtCompare)//dt為輸入的字串轉換成的時間戳
dt+=3155760000.0;//如果小於1950年的時間戳,則加上100年的秒數進行彌補
days=dt/86400.0;//轉換成天數