服务器是新加坡的,平台访问客户主要来自美国,也有其他国家,lnmp环境设置了美国时区(America/New_York)。 需求是:根据客户端本地时区,转化本地显示时间。
/*
* 时区转换
*/
public static function getTimezone($time, $from, $to='Asia/Shanghai', $fm='Y-m-d H:i:s')
{
if(empty($fm)){
$fm='Y-m-d H:i:s';
}
if(empty($from)){
$from='America/New_York';
}
if($form==$to){
return date($fm, $time);
}
$tt = date("Y-m-d H:i:s",$time);
$ctime = '';
$userTimezone = new \DateTimeZone($from);
$gmtTimezone = new \DateTimeZone($to);
$myDateTime = new \DateTime($tt, $gmtTimezone);
$num = $userTimezone->getOffset($myDateTime)+14400+86400;
$ctime = date($fm, $myDateTime->format('U') + $num);
return $ctime;
}
|