跨時區web系統解決方案

在開發的時候,我們爲了時間的準確性,一般會取服務器上面的時間爲標準時間。

但是如果系統使用者和我們不在同一個時區,比如服務器的時間是北京時間,而系統使用者的時間是美國時間,這中間差了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"))

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章