Prisma 創建數據時間丟失 8 小時:背后的原因
在使用 Prisma 時,用戶有時會遇到數據時間丟失 8 小時的情況。這似乎表明數據庫的時區未正確設置。然而,在檢查數據庫時區后卻發現一切正常。那么,是什么導致了這種差異呢?
時間存儲約定
數據庫不會保存時區信息。因此,需要約定好保存時間時應采用 UTC 還是本地時間。建議使用 UTC 時間,因為它方便轉換。
數據轉換
在將數據存儲到數據庫之前,必須將其從本地時間轉換為 UTC 時間。在讀取數據時,還需要進行相反的轉換。此轉換通常在服務端執行。
本地時間與 UTC 時間
對于面向用戶的瀏覽器端來說,默認使用本地時間。因此,在將數據從瀏覽器傳輸到服務端時,需要判斷該時間屬于哪個時區,然后將其轉換為 UTC 時間。
解決方法
要解決此問題,需要在瀏覽器端判斷時區,并相應地轉換時間。對于非用戶指定的時間,可以將其替換為服務器當前時間,并使用 UTC 格式存儲。
通過遵循這些步驟,可以確保 Prisma 創建數據時的時區正確,避免因這種差異而帶來的混亂。