PHP时间/日期时区特定的东西

时间:2013-10-20 02:05:21

标签: php date time timezone unix-timestamp

我对于如何在获取用户的时区时存储和访问各种事物的“时间点”有点好奇。使用time();作为存储/数据库数据会很酷。

例如,如果我对博客进行更新,它会将戳记显示为类似26/01/2000 11:34的内容,但如果用户的时区比我的前一小时那么它当然会显示为26/01/2000 12:34通过他们的设置确定。对于时间限制功能的倒计时等事情也很有用。但是我不知道如何以这种方式格式化unix-timestamp。指导和帮助将是美好的:)。

3 个答案:

答案 0 :(得分:2)

您的所有发布时间和服务器时间都应该是UTC开始。 从数据库中检索您的发布时间,并以类似于下面的方式使用DateTime和DateTimeZone类

$fromDatabase = '2008-08-03 14:52:10';
$datetime = new DateTime($fromDatabase);
$timezone = new DateTimeZone('America/Los_Angeles');
$datetime->setTimeZone($timezone);
echo $datetime->format('Y-m-d H:i:s');

或者在Linux上如果使用MySQL,您可以加载时区表并调整MySQL查询中返回的日期时间。请参阅此页面了解如何开始 - http://dev.mysql.com/doc/refman/5.5/en/time-zone-support.html

答案 1 :(得分:1)

请阅读日期的手册页:

PHP Manual: Date

我相信这段代码会按你的要求行事:

$time = time();
$today = date("m j, Y, G:i a");
echo $today;

要更改时区,请添加或减去一小时。由于unix时间戳以秒为单位,因此60秒x 60分钟= 1小时或360秒。因此,提前一小时增加360秒,然后减去一小时,如下所示:

$time = time()-360;

答案 2 :(得分:0)

抱歉在这里和另一个时间问题上重新发表我的答案。

这适用于格式化为'YYYY-MM-DD HH:MM:SS'的任何时间(可能是“新DateTime”功能可以使用的任何时间。

function changetimefromUTC($time, $timezone) {                   // SEND YOUR ORIGINAL TIME AND YOUR NEW TIMEZONE
    $changetime = new DateTime($time, new DateTimeZone('UTC'));  //YOUR ORIGINAL TIME GOES HERE
    $changetime->setTimezone(new DateTimeZone($timezone));       // THIS CHANGES TO THE NEW TIMEZONE
    return $changetime->format('m/d/y h:i a');    // THIS OUTPUTS THE NEW TIME IN WHATEVER FORMAT YOU WANT
}

支持的时区列表http://us1.php.net/manual/en/timezones.php