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