記錄一次錯誤的使用當前時間new Date()引發的錯誤

strong發表於2024-03-28
  • 前言

   當我回顧自己的部落格寫作經歷時,發現已經好久沒有動筆了。然而,我深知網際網路的強大之處,它讓我們每個人都能輕鬆地獲取資訊和解決問題。每當我遇到困難時,只需上網搜尋一番,往往就能找到答案。

這一切都得益於那些樂於分享經驗和知識的人們。他們的貢獻讓我們能夠少走很多彎路,更加高效地解決問題。正因如此,網際網路才得以持續繁榮發展。

然而,我的部落格已經擱置已久,我感到寫作很有必要,為網際網路社群貢獻自己的一份力量。透過分享我的經驗、見解和解決問題的方法,我希望能夠幫助他人,同時也加深自己對所學知識的理解和應用。

  • 起因

   在一個類中需要多次使用當天的時間進行比較,於是我就定義了一個變數

Date today = new Date();

以便多次使用這個 today,想當然覺得沒問題,可是出事兒了~~~

  • 問題現象

專案上線之後,測試驗證了,說沒有問題,結果第二天發現獲取的當前時間不對,today還是昨天的時間,我重啟了下專案發現時間正確了,我還以為是new Date()的問題,我還換成了 LocalDateTime.now() ,結果問題依舊,這個問題頭疼了好久,總不能專案每天重啟一下吧(實在沒辦法,寫個指令碼每天重啟,但總不是解決問題的辦法)。

  • 解決辦法

最後想,有沒有可能是變數的問題,於是我把所有用到 today 變數的地方都換成了直接使用 new Date(),於是問題解決。

  • 根本原因

沒想明白,為什麼,於是問了大神,大神告訴我:"在 Java 中,一旦變數被初始化,其值就不會再改變,除非您顯式地對其進行重新賦值。" ,我這才恍然大悟,原來犯了一個低階錯誤,希望你不要像我一樣。

相關文章