2014-04-22 90 views
0

在php中有一個函數date_default_timezone_set(),它接受像「UK/London」這樣的時區字符串。但不幸的是,我只有用戶的GMT偏移量。PHP根據GMT偏移量獲取當前本地時間

假設我在格林威治標準時間+5,我想根據GMT +5獲得當前時間。我在Google上進行了大量搜索,但沒有幫助。

因爲,我沒有時區字符串我在尋找類似

$current_date = date("Y M D H:S, "GMT +5"); 

請幫

+1

可能重複[我怎樣格林威治標準時間的PHP?( http://stackoverflow.com/questions/851574/how-do-i-get-greenwich-mean-time-in-php) – NorthBridge

+1

不,不,不,請 –

+0

@NorthBridge,抵消是奇怪的,我不' t想要抵消像$ offset = 4 * 60 * 60; –

回答

2

只能專門使用GMT抵消了現在,即它是完全沒用如果用戶在半年前告訴你他的GMT偏移量,並且你想知道他現在在什麼時間他的位置。它基本上可以是幾個小時內的任何事情。即使您在幾秒前得到了的偏移量,但如果您恰好碰到DST更改,則計算時間可能會有所不同。如此說來,你會想要從格式化的時間加上/減去偏移小時數,這是你唯一能做的事情。

$offset = 5; 
$hours = (gmdate('H') + $offset) % 24; 

echo $hours . gmdate(':i:s Y m d'); 

這只是一個例子,您還需要處理微小的偏移量。

+0

你剛剛發佈了一個太複雜的答案 –

+2

含義是什麼?你想要一個更簡單的功能?你不明白我寫的是什麼? – deceze

+0

@decceze,看下一個答案。 :d –

1
date_default_timezone_set('GMT'); 
$curTime = strtotime("+5 hours"); 
$current_date = date("Y M D H:S, $curTime); 
  1. 集GMT時區第一或獲取GMT偏移量。
  2. 獲取時間戳
  3. 時間戳最新
相關問題