如何在php中动态输出每个时区的当前时间


How to dynamically output current time per timezone in php?

我在每个节点中存储了一个时区,并且希望根据时区集显示每个节点的当前时间。

E。例如,有一个节点America/Sao_Paulo -一个存储的时区将是'America/Sao_Paulo'。

为了以tz格式显示时区,我必须使用以下代码(Drupal 7)打印它:

<?php print $node->field_mytimezone['und'][0]['value']; ?>

结果将是:

America/Sao_Paulo

如何动态地改变php代码的一部分?我试过了:

<?php $zone='<?php print $node->field_mytimezone['und'][0]['value']; ?>'; ?>
<?php date_default_timezone_set('$zone');
echo date('H:i');
?>

嵌套显然不起作用,但我不知道如何在保留第一部分(以tz格式输出时区的部分)的同时正确实现它。

我不太清楚你要的是什么,但如果时区字符串存储在$node->field_mytimezone['und'][0]['value']中,下面的代码应该给你一个如何使用它的想法:

$zone = $node->field_mytimezone['und'][0]['value'];
$dt = new DateTime();
$dt->setTimezone(new DateTimeZone($zone));
echo $dt->format('H:i');