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


calculate time from GMT time and user time zone

我有一个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。

我试了很多例子,但不工作,因为一些区域是+和一些是-

谢谢

假设所有日期都以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')

试试:

$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');

示例:

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