我使用了whereBetween方法,並使用使用者的時(shí)區(qū)轉(zhuǎn)換了一天的開(kāi)始和結(jié)束時(shí)間。這樣,資料庫(kù)將根據(jù)使用者的本地時(shí)間進(jìn)行查詢(xún),您應(yīng)該能夠得到正確的結(jié)果。
$todayProcedures = Procedure::query()
->where('user_id', $user->id)
->whereBetween('procedure_time', [
Carbon::now()->startOfDay()->setTimezone($user->timezone)->toDateTimeString(),
Carbon::now()->endOfDay()->setTimezone($user->timezone)->toDateTimeString(),
])
->get();
在處理應(yīng)用程式中的時(shí)間戳記時(shí),正確處理時(shí)區(qū)轉(zhuǎn)換非常重要。為了確保一致性和準(zhǔn)確性,請(qǐng)遵循以下準(zhǔn)則:
- 資料庫(kù)儲(chǔ)存:始終使用UTC格式將時(shí)間戳記儲(chǔ)存在資料庫(kù)中。這樣做可以確保所有時(shí)間戳記都是標(biāo)準(zhǔn)化的,與任何特定的時(shí)區(qū)無(wú)關(guān)。
- 查詢(xún)時(shí)區(qū)轉(zhuǎn)換:在查詢(xún)資料庫(kù)時(shí)進(jìn)行時(shí)區(qū)轉(zhuǎn)換,而不是在記錄插入或更新時(shí)進(jìn)行。透過(guò)這樣做,您可以確保從資料庫(kù)檢索的資料在不考慮使用者時(shí)區(qū)的情況下保持一致和準(zhǔn)確。
- 基於使用者時(shí)區(qū)的顯示:在向使用者顯示時(shí)間戳記或根據(jù)其時(shí)區(qū)偏好進(jìn)行處理時(shí),執(zhí)行必要的轉(zhuǎn)換。透過(guò)將時(shí)間戳調(diào)整為使用者的時(shí)區(qū),您可以提供更友善和在地化的體驗(yàn)。
遵循這些準(zhǔn)則,您的應(yīng)用程式將保持準(zhǔn)確的時(shí)間戳數(shù)據(jù),並在不同的時(shí)區(qū)提供一致的結(jié)果。
點(diǎn)贊 +0
P粉536909186