如何在PHP中将日期时间从UTC转换为UTC + 01(也在亚洲/加尔各答)

时间:2015-12-11 14:13:38

标签: php datetime timezone

我想将日期时间从时区UTC转换为UTC + 01等任何时区,也喜欢时区名称,例如亚洲/加尔各答。

我该怎么做?

这是我的代码

<?php
date_default_timezone_set("UTC");
$date = new DateTime(date("Y-m-d H:i:s"));
$date->setTimezone(new DateTimeZone('UTC+01')); 
echo $date->format('Y-m-d H:i:s'); 
?>

我收到以下错误:

Fatal error: Uncaught exception 'Exception' with message 'DateTimeZone::__construct(): Unknown or bad timezone (UTC+01)' in /var/www/html/test/index.php:6 Stack trace: #0 /var/www/html/test/index.php(6): DateTimeZone->__construct('UTC+01') #1 {main} thrown in /var/www/html/test/index.php on line 6 

1 个答案:

答案 0 :(得分:4)

您必须使用有效的时区。您可以使用UTC+1(欧洲中部时间)或CET(两者都取决于夏季/冬季),而不是使用Europe/Berlin(无效),此时区也是有效期为全年(UTC+1:00),对于加尔各答,您可以使用Asia/Calcutta

示例:

  • $date->setTimezone( new DateTimeZone( 'Asia/Calcutta' ) );
  • $date->setTimezone( new DateTimeZone( 'CET' ) );
  • $date->setTimezone( new DateTimeZone( 'Europe/Berlin' ) );

Here at the docs,您可以找到包含有效DateTimeZone值的列表。

更新,如 @Marc B 的评论中所述。和 @dezeze 你可以使用

$date = new DateTime();

而不是使用

$date = new DateTime(date("Y-m-d H:i:s"));