1. 程式人生 > >lua中夏令時區的問題解決

lua中夏令時區的問題解決

serve times 服務器 遊戲 客戶 cal 會有 server 服務

遊戲中會遇到時區的問題

比如北京時間晚上8點開啟一個活動,此時此刻在世界各地都應該可以參加

這個時候我們計算時間應該按照服務器的時間計算。

所以一般做法是

服務器發給客戶端一個server_timestamp ,時間戳的意思是從1970年1月1日零時到現在的時間總秒數

在lua中我們會轉化成日期,比如: local date = os.date("*t",server_timestamp)

這樣算正常來說沒什麽問題

但是很多國家地區采用了夏令時計時,北京時區是非夏令時區

導致了os.date("*t",server_timestamp)算出的時間 多了一個小時

lua中os.date()返回的table有個isdst字段 它是表示當前設備是否是夏令時區的字段

那麽我們只要判斷當前是夏令時區,拿到時間戳的時候 減去一個小時是3600s

再去計算時間,就不會有錯誤,如下

local date = os.date("*t",server_timestamp + (isdst and -3600 or 0))

lua中夏令時區的問題解決