如何格式化记录集的时间和日期?

时间:2014-08-15 11:31:30

标签: javascript php html

我有一个动态表,显示记录列表及其日期和时间。日期和时间显示正确,但当我移动到托管服务器时,我得到一个不同的日期和时间,我知道它是基于它的时区。我已经看到了不同的教程,展示了如何在页面上回显时在不同时区设置日期和时间的格式,但是当我使用记录集中的绑定数据进行尝试时,它不能在线工作。

这是我的绑定记录集数据:

<?php echo $row_forum['Date']; ?>

请向我解释:&#34;如何格式化非洲/拉各斯?&#34;。

2 个答案:

答案 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)

出于您的目的,您可以使用DateTimeDateTimeZone,如下所示:

$dt = new DateTime($row_forum['Date'], new DateTimeZone('Africa/Lagos'));
echo $dt->format('Y-m-d H:i:s');