在開發的時候,我們爲了時間的準確性,一般會取服務器上面的時間爲標準時間。
但是如果系統使用者和我們不在同一個時區,比如服務器的時間是北京時間,而系統使用者的時間是美國時間,這中間差了12小時。
那麼如何讓服務器取記錄系統使用者的本地時間呢?
有人會說直接去使用者設備上的本地時間就好,但是這樣會有問題,如果設備時間不準確,那麼記錄的時間也不準確所以不行。
解決方案有多種,比如給使用者加上時區標識,我們討論一種更簡單暴力的解決辦法。
前端獲得時區信息,服務器由世界標準時間+前端傳來的時區信息 計算使用者本地時間
前端獲得時區信息:
var time_area = new Date().getTimezoneOffset() / 60;
console.log(time_area )
如果是北京時間則 time_area 爲 -8
如果是美國時間則time_area 爲 8
服務器計算當時時間(python),time_area 是前端傳來的
from datetime import datetime,timedelta,timezone
utc_time = datetime.utcnow().replace(tzinfo=timezone.utc)
offset = (0-time_area)
local_time = utc_time.astimezone(timezone(timedelta(hours=offset)))
print(datetime.strftime(local_time, "%Y-%m-%d %H:%M:%S"))