2016-09-18 74 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'); 
相关问题