timestamp可用於應對統一時間需求

2021-08-14 08:14:47 字數 1008 閱讀 2580

假設這樣的場景。

歐洲的玩家與中國的玩家匹配上了一場對局,而負責提供對戰支援的伺服器在美國

問題來了,這場對局的發生時間以哪個為準?

能不能滿足一種需求,中國玩家檢視對局資訊時,對局開始時間是按北京時間日期算;而歐洲玩家檢視對局資訊時,又是按他當地的時間日期算。

其實很簡單,資料庫裡使用timestamp型別的字段,比如addtime來記錄對局開始時間。

寫入的時候不複雜,使用mysql 自帶的now() 函式  或者 current_timestamp ,把美國的伺服器時間寫進表。

這時表裡面實際儲存的是一串數字,即時間戳,例如1515049982

讀取 的時候,可以用unix_timestamp(addtime)來把這個數字拿出來,然後再使用各個語言自帶的時間函式,把它轉為當地時間顯示即可。

驗證過程:

找了國內和國外兩個伺服器,確認了當地伺服器時間不同後,建同樣的表。這個表addtime預設值是current_timestamp

create table `timetest` (

`id` bigint(20) unsigned not null auto_increment,

`addtime` timestamp default current_timestamp comment '新增時間',

primary key (`id`)

) auto_increment=2 default charset=utf8;

同時往表裡插入一條資料,

insert into timetest (id) values (3);

然後select 出來

select addtime,

unix_timestamp(addtime) 

from timetest;

就會發現,時間戳數字只相差1(手速原因),但是顯示的date和time是不一樣的。

PHP手冊 declare 可用於PHP效能測試

function profile 註冊tick方法 register tick function profile 設定每執行幾條語句執行已註冊的方法這裡設定了3條 每次 declare ticks 3 輸出結果 now tmp is 3.n now tmp is 6.n now tmp is 8.n...

VMware工具現在可用於巢狀ESXi

vmware vsphere最大的亮點在於你無需投入大量的專用硬體,即可實驗vsphere的功能。尤其,vsphere可以在其本身被虛擬化。這意味著你可以執行esxi vsphere的管理程式 作為虛擬機器。這是乙個用於測試功能 許可權 配置安排 公升級到最新版等等的很不錯的工具。執行esxi的vm...

異常不可用於邏輯處理

異常是錯誤處理,但是不可以用於邏輯處理,假設我們封裝了乙個msgqueue,這個類負責收集由服務端一條接受執行緒收集客戶端訊息,另一條工作執行緒負責取出訊息,並對訊息進行處理。class msg class msgqueue 這裡定義了msgqueue的兩個方式,分別是收集客戶端訊息,然後儲存訊息的...