时间RFC3339格式,到时区



我需要将此时间转换为UTC+00时区时间。它以RFC3339格式为我提供了一个日期和时区,具体取决于用户所在的位置。所以它看起来像这个

2000-01-01T00:00:00+02:00

我需要使用+02时区并正确计算日期。所以我的想法是:我只是检查一下自该日期起的最后00:00和-或+天是什么吗?或者实际上有一些函数可以从php端使用,比如time_convert( )等。。?

我做了这个,但我一直不确定它是否是正确的做法。

$date = '2000-01-01 00:00:00+02:00';
$date_date = substr($date, 0, 19);
$add_hours = substr($date, 19, 22)*3600;
$add_mins = substr($date, 23, 25)*60;
$add_secs = $add_hours+$add_mins;
$date = date('Y-m-d H:m:i', strtotime($date_date)+$add_secs);
gmdate用于格式化GMT(=UTC(输出。参见PHP:gmdate-手动

您可以使用获得您想要的结果

$date = strtotime("2000-01-01 00:00:00+02:00");
$utc = gmdate("Y-m-d H:i:sP", $date);

其中p是与GMT的偏移量。

您可能可以将DateTimeDateTimeZone结合使用以获得您想要的内容。

下面是一个如何使用它的快速示例。

<?php

$date = new DateTime('now', new DateTimeZone('UTC'));
$date->setTimezone(new DateTimeZone('America/Los_Angeles'));
echo $date->format('Y-m-d H:i:s'); // Converted to LA timezone.