2016-09-18 179 views
0

我有一個mysql數據庫節省每個用戶的GMT時間爲每個記錄時間。像從格林威治標準時間和用戶時區計算時間

id user_id date_added 
1 1  2016-06-08 12:22:19 
2 2  2016-06-08 11:22:14 
3 4  2016-06-08 11:02:09 
4 1  2016-06-08 10:12:11 

我也有表保存時區爲每個用戶喜歡

id user_name timezone 
1 user1  Pacific/Midway 
2 user2  Asia/Dubai 

現在我想計算實時使用上述PHP時區的用戶記錄。

我試了很多例子,但沒有工作造成一定的區域爲+,有些是 -

感謝

+0

更改格式,只需使用'日期時間+ timezoneValue' –

+0

@juergen d謝謝你的回覆但你看到timezonevalue它的文本...我嘗試,但它不工作 –

+0

當然,你必須先獲得那些時區名稱的INT值。 –

回答

1

假設所有日期都以UTC日期格式存儲,您需要轉換時區以獲取本地時間爲每個用戶。

例子:

// default timezone is UTC 
$date = new DateTime('2016-06-08 12:22:19', new DateTimeZone('UTC')); 
var_dump($date->format('Y-m-d H:i:sP')); 

// convert timezone to Asia/Dubai +4 UTC 
$date->setTimezone(new DateTimeZone('Asia/Dubai')); 
var_dump($date->format('Y-m-d H:i:sP')); 

輸出將是

string '2016-06-08 12:22:19+00:00' (length=25) 
    string '2016-06-08 16:22:19+04:00' (length=25) 

爲了擺脫+00+04除去P

$date->format('Y-m-d H:i:s') 
-1

例子:

// date from db 
$date_string = '2016-06-08 11:22:14'; 

// create timezone 
$dateTimeZone = new DateTimeZone('Asia/Dubai'); 

// create date time for timezone 
$dateTimeLocale = new DateTime($date_string, $dateTimeZone); 
0

試試這個方法:

$date = new DateTime('2016-09-18 16:17:34', new DateTimeZone('Asia/Dhaka')); 

// datetime for the timezone 
echo $date->format('Y-m-d H:i:s'); 
相關問題