Php 如何将日期时间从UTC转换为UTC+;01(同样在亚洲/加尔各答)菲律宾文

Php 如何将日期时间从UTC转换为UTC+;01(同样在亚洲/加尔各答)菲律宾文,php,datetime,timezone,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'); ?> 您必须使用有效的时区

我想将日期时间从时区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'); 
?>

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

示例:

  • $date->setTimezone(新的DateTimeZone('Asia/加尔各答')
  • $date->setTimezone(新的DateTimeZone('CET')
  • $date->setTimezone(新的DateTimeZone('Europe/Berlin'))
,可以找到具有有效值的列表

更新:就像@Marc B.和@deceze的评论中提到的那样,您可以直接使用

$date = new DateTime();
而不是使用

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

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

示例:

  • $date->setTimezone(新的DateTimeZone('Asia/加尔各答')
  • $date->setTimezone(新的DateTimeZone('CET')
  • $date->setTimezone(新的DateTimeZone('Europe/Berlin'))
,可以找到具有有效值的列表

更新:就像@Marc B.和@deceze的评论中提到的那样,您可以直接使用

$date = new DateTime();
而不是使用

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

RTFM:您的时区名称不是有效/可识别的名称之一。你的代码是毫无意义的。使用旧的
date()
为“now”创建一个字符串,然后将其馈送到datetime,datetime无论如何都会使用“now”来创建
$date
。cpu周期的总浪费。是的,和?查找适当的格式以指定utc+1,该格式在我提供的链接中可用。你不能只是编造自己的时区名称,并期望php理解它们。如果你只想添加一个小时,为什么不直接修改(“+1小时”)
newdatetime(date(“Y-m-dh:i:s”)
newdatetime
相同,无需调用
date
。“UTC+01”不是时区,而是偏移量。这一补偿将在全年发生变化!如果要将时间定位到客户的位置,则需要基于位置的时区(亚洲/加尔各答),而不是UTC偏移。UTC偏移量仅在客户刚刚告诉您其偏移量时有效;如果将其作为首选项存储以供将来使用,则无法使用。RTFM:您的时区名称不是有效/可识别的名称之一。你的代码是毫无意义的。使用旧的
date()
为“now”创建一个字符串,然后将其馈送到datetime,datetime无论如何都会使用“now”来创建
$date
。cpu周期的总浪费。是的,和?查找适当的格式以指定utc+1,该格式在我提供的链接中可用。你不能只是编造自己的时区名称,并期望php理解它们。如果你只想添加一个小时,为什么不直接修改(“+1小时”)
newdatetime(date(“Y-m-dh:i:s”)
newdatetime
相同,无需调用
date
。“UTC+01”不是时区,而是偏移量。这一补偿将在全年发生变化!如果要将时间定位到客户的位置,则需要基于位置的时区(亚洲/加尔各答),而不是UTC偏移。UTC偏移量仅在客户刚刚告诉您其偏移量时有效;如果您将其作为首选项存储以备将来使用,则无法使用。您如何说UTC+1代表欧洲/柏林,GMT+5:30代表亚洲/加尔各答。有什么功能可以将UTC+01和GMT+5:30等偏移时区转换为时区名称吗?@ErFaiyazAlam:说UTC+1是欧洲/柏林是不正确的,因为夏天和冬天都是这样。我不知道有什么内置函数会因为给定的偏移量而返回时区名称。我认为这几乎是不可能的。例如=>UTC+8对于8个不同的时区名称是正确的,那么如何选择正确的时区名称呢?有一种方法可以获取时区名称,但这只是您的脚本或服务器上的时区。您可以查看如何说UTC+1代表欧洲/柏林,GMT+5:30代表亚洲/加尔各答。有什么功能可以将UTC+01和GMT+5:30等偏移时区转换为时区名称吗?@ErFaiyazAlam:说UTC+1是欧洲/柏林是不正确的,因为夏天和冬天都是这样。我不知道有什么内置函数会因为给定的偏移量而返回时区名称。我认为这几乎是不可能的。例如=>UTC+8对于8个不同的时区名称是正确的,那么如何选择正确的时区名称呢?有一种方法可以获取时区名称,但这只是来自脚本或服务器的时区