我有一个动态表,显示记录列表及其日期和时间。日期和时间显示正确,但当我移动到托管服务器时,我得到一个不同的日期和时间,我知道它是基于它的时区。我已经看到了不同的教程,展示了如何在页面上回显时在不同时区设置日期和时间的格式,但是当我使用记录集中的绑定数据进行尝试时,它不能在线工作。
这是我的绑定记录集数据:
<?php echo $row_forum['Date']; ?>
请向我解释:&#34;如何格式化非洲/拉各斯?&#34;。
答案 0 :(得分:1)
好的,假设你的服务器在伦敦,你想知道创建时间戳时拉各斯的时间。
您需要使用方便的DateTime类。 Manual here
<?php
// assume this is when the row was created on the server in london.
$date = new DateTime('2000-01-01 01:00:00', new DateTimeZone('Europe/london'));
echo $date->format('Y-m-d H:i:sP') . "\n";
// Now you want to print the time that it was in Lagos when the row was created.
$date->setTimezone(new DateTimeZone('Africa/Lagos'));
echo $date->format('Y-m-d H:i:sP') . "\n";
?>
输出为
2000-01-01 01:00:00+00:00
2000-01-01 02:00:00+01:00
提前一小时,即02:00:00
所以你要做的就是
// this should pick up the default timezone from the server
$date = new DateTime($row_forum['Date']);
// adjust the timezone you want the output to be in
$date->setTimezone(new DateTimeZone('Africa/Lagos'));
// get the data and time in whatever format you want to show it as
echo 'It was ' . $date->format('H:i:s') . ' in Lagos';
现在服务器的位置无关紧要,或者稍后移动,您将始终在拉各斯获得时间。
答案 1 :(得分:0)
出于您的目的,您可以使用DateTime
和DateTimeZone
,如下所示:
$dt = new DateTime($row_forum['Date'], new DateTimeZone('Africa/Lagos'));
echo $dt->format('Y-m-d H:i:s');