版權聲明:本文爲博主原創文章,未經博主容許不得轉載。服務器
print("sec="..CurrentDateTime.sec)框架
若是你的遊戲服務端時間的時區是東八區,且跑上面代碼的機子的時區也是東八區,你可能會很是樂意地看到,打印出來的時間與服務端時間是一致的;可是用來跑上面代碼的機子的時區不是東八區,如一個日本人使用他機子來跑你的程序(他的機子時區是東九區),這時會看到打印出來的時間比這遊戲服務端的時間快了1個小時,這確定是錯誤的。post
爲何會這樣? 原來上面調用os.date()時會把當前設備的時區也關聯上去。因此在東八區設備下跑徹底是正確的。但你不可能指定別人使用固定時區的機子來跑你的程序吧,那怎辦呢? -- Compute the difference in seconds between local time and UTC. local function get_timezone() local now = os.time() return os.difftime(now, os.time(os.date("!*t", now))) end local localTimeZone = get_timezone() local timeZoneD = ServerTimeZone - localTimeZone --計算出服務端時區與客戶端時區差值 local CurrentDateTime = os.date("*t",ServerTimeStamp + timeZoneD) 這時你會發現,不管你使用東八區、東九區或者其它時區的機子去跑,它都正確地打印出這個服務器的時間。 擴展一下來講,只要你作了這個時區的差值處理,不管服務器的時區是哪一個,不管客戶端的時區是哪一個,客戶端都能正確地顯示服務器的時間。 再擴展一下來講,不管是哪一個cocos2dx的版本,不管是使用哪一個遊戲引擎框架,都應該在處理時間上作相似上面的時區處理,讓客戶端可以正確地顯示服務端的時間。