使用PHP将时区格式化为本地时间

时间:2017-05-30 08:12:23

标签: php datetime-format

在未提供日期时,如何将时区(例如14:00:00+02:00)提供的更改时间更改为当地时间(结果为16:00:00)。 我已经尝试过DateTime课了。但由于我只处理时间,而不是日期,因此并不能始终提供正确的结果:

$time = '14:00:00+02:00';
$datetime = new DateTime($date);
$result = $datetime->format("H:i:s");

4 个答案:

答案 0 :(得分:0)

您可以使用setTimezone()函数

$time = '14:00:00+02:00';
$datetime = new DateTime($time);
$result = $datetime->format("H:i:s");
echo $result;
echo '<br>';
$datetime->setTimezone(new DateTimeZone('Your_local_timezone')); // ex: UTC (+00h00) or Europe/Moscow (+4h00)
$result = $datetime->format("H:i:s");
echo $result;

答案 1 :(得分:0)

使用DateTime的setTimezone方法。它会自动更改时间以匹配时区。

$date = new DateTo,e("2017-02-02 10:00:00", new DateTimeZone("+0200"));
$date->setTimezone(new DateTimeZone("-0200"));
var_dump($date->format("H:i:s"));

将输出以下内容:

string '06:00:00' (length=8)

答案 2 :(得分:0)

$utc = new DateTimeZone("UTC");
$zone = new DateTimeZone("YOUR_TIME_ZONE");
$date = new DateTime("14:00:00+02:00", $utc);
$date->setTimezone($zone);
echo $date->format('Y-m-d H:i:s');

答案 3 :(得分:0)

您应该具体说明您的时区,并告诉DateTime使用时区 例如:

$time = '14:00:00+02:00';
$datetime = DateTime::createFromFormat('H:i:s+T', $time);
$datetime->setTimezone(new DateTimeZone('Europe/Warsaw'));
$result = $datetime->format("H:i:s");

echo($result);

在格式模式中使用+T表示php的日期包含时区,在下一步中,您应使用setTimezone设置时区。例如,我设置'Europe/Warsaw'但没有任何事情发生,因为+ 02:00 CEST等于'Europe/Warsaw'

其他方式是将+02:00更改为命名时区,这是一个示例:

$time = '14:00:00 (UTC)';
$datetime = new DateTime($time);

$datetime->setTimezone(new DateTimeZone('Europe/Warsaw'));
$result = $datetime->format("H:i:s");

echo($result);