我有一个小功能:
public static function date($input = 'now', $format = 'Y-m-d H:i', $tzFrom, $tzTo) {
$date = date_create($input, new DateTimeZone($tzFrom))->setTimezone(new DateTimeZone($tzTo));
if ($format == 'TS') {
return strtotime($date->format('Y-m-d H:i'));
}
return $date->format($format);
}
这是它的输出:
echo '<br>' . DT::date('now', 'TS', 'America/Los_Angeles', 'UTC'); // 1452281400
This is:
1452281400 -> Fri, 08 Jan 2016 19:30:00
但这是错误的,因为当前的UTC时间:2016年1月8日星期五20:30:00,而不是19:30:00。
额外1小时在哪里?我该如何修复我的功能? 谢谢!
答案 0 :(得分:0)
function convert_time($timestring,$format="Y-m-d H:i:s",$from,$to){
$default = date_default_timezone_get(); // get default to reset
date_default_timezone_set($from); // set the `from` timezone
$the_date = strtotime($timestring); // given string to time
date_default_timezone_set($to); // given string to required zone
$req_date = date($format,$the_date); // required date in required format
date_default_timezone_set($default); // reset to default
return $req_date;
}
希望这有帮助