是否有可以直接转换的PHP函数(或组合函数)<;时间>;以GPX到当地时间?

是否有可以直接转换的PHP函数(或组合函数)<;时间>;以GPX到当地时间?,php,datetime,timezone,simplexml,gpx,Php,Datetime,Timezone,Simplexml,Gpx,我正在使用simplexml\u load\u file解析行程日志文件(.GPX)的内容。在其中,标记记录是GMT的,我正在寻找一个PHP函数或PHP函数的简单组合,以将其转换为我的本地时间(GMT+8)。我已经看了一遍,仍然不知道该怎么办 具体来说,是否有PHP函数接收类似“2013-11-22T04:14:30Z”的字符串并返回“2013-11-2212:14:30”(我希望以这种格式显示日期时间)?我知道这可以通过自己编写一个函数来实现,但我认为可以有一个标准的PHP函数来实现这一点。使

我正在使用
simplexml\u load\u file
解析行程日志文件(
.GPX
)的内容。在其中,标记
记录是GMT的,我正在寻找一个PHP函数或PHP函数的简单组合,以将其转换为我的本地时间(GMT+8)。我已经看了一遍,仍然不知道该怎么办

具体来说,是否有PHP函数接收类似“2013-11-22T04:14:30Z”的字符串并返回“2013-11-2212:14:30”(我希望以这种格式显示日期时间)?我知道这可以通过自己编写一个函数来实现,但我认为可以有一个标准的PHP函数来实现这一点。

使用起来非常简单&:

$time='2013-11-22T04:14:30';
$time_z='2013-11-22T04:14:30Z';
$add_time=“+8小时”;
$unixtime=strotime($time);
$unixtime_z=strotime($time_z);
回显“Unixtime:”。日期('Y-m-d h:i:s',$unixtime)。'
; 回显“Unixtime Z:”。日期('Y-m-d h:i:s',$unixtime_z)。'
; 回显“Unixtime(+8小时):”。日期('Y-m-d h:i:s',$unixtime.$add_time)。'
; 回显“Unixtime Z(+8小时):”。日期('Y-m-d h:i:s',$unixtime\U z.$add\U time)。'
产出将是:

Unixtime:2013-11-22 04:14:30

Unixtime Z:2013-11-21 11:14:30

Unixtime(+8小时):2013-11-22 04:14:30

Unixtime Z(+8小时):2013-11-21 11:14:30


这项工作的关键是
$add_time
,它只是我在日期字符串中添加
+8小时。但根据您更大的需求和输入数据,还有其他方法来处理此问题。

Meh。如上面的复制链接所示,正确的时区转换会更好-它更灵活,更重要的是,它考虑了DST,而这段代码没有。谢谢Jake!但代码的输出是“2013-11-22 08:14:30”,而不是“2013-11-22 12:14:30”。只有当我从输入字符串中删除“T”和“Z”时,它才会输出所需的结果,就像输入这样:“2013-11-22 04:14:30”而不是“2013-11-22T04:14:30Z”。我还不明白它是怎么工作的。@RayYen不太确定你看到了什么,或者你是否把事情搞混了。我刚刚调整了答案,以便根据示例的细微变化向您显示不同的变化。请查看我的意思。谢谢Pekka,我按照你提供的链接找到了它。它并不像我想象的PHP可能提供的那样简单。类似于
timeconvfunc('2013-11-22T04:14:30Z',origTimeZone,convTimezone)
。我认为不存在这样的函数,因为它可以同时执行两项任务—一项是解析时间字符串,二项是转换时区。
$time = '2013-11-22T04:14:30';
$time_z = '2013-11-22T04:14:30Z';

$add_time = ' + 8 hours';

$unixtime = strtotime($time);
$unixtime_z = strtotime($time_z);

echo 'Unixtime: ' . date('Y-m-d h:i:s', $unixtime) . '<br />';
echo 'Unixtime Z: ' . date('Y-m-d h:i:s', $unixtime_z) . '<br />';

echo 'Unixtime (+ 8 hours): ' . date('Y-m-d h:i:s', $unixtime . $add_time) . '<br />';
echo 'Unixtime Z (+ 8 hours): ' . date('Y-m-d h:i:s', $unixtime_z . $add_time) . '<br />';