从GMT时间和用户时区计算时间

时间:2016-09-18 09:58:56

标签: php mysql

对于每个用户,每个记录都有一个mysql DB保存时间。喜欢

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中使用上述时区来计算用户记录的实时时间。

我尝试了很多例子,但没有工作,因为某些区域是+,而有些区域是 -

由于

3 个答案:

答案 0 :(得分:1)

假设所有日期都以UTC日期格式存储,您需要转换时区以获取每个用户的本地时间。

示例:

Distinct

输出

// 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

答案 1 :(得分: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');

答案 2 :(得分:-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 );