似乎有很多方法可以在php中进行日期和时间按摩。我通常只处理当地时间。今天,我需要在UTC工作。
我正在查询API,他们给我的关于任意记录的数据是: 创建时间:2009年6月18日星期四21:44:49 +0000 *记录为“UTC记录创建时间”
utc_offset:-28800 *用户之间的差异
我需要将其转换为简单的字符串,以向用户显示数据在当地时间提交的时间和日期。
我相信,如果在加利福尼亚州,例如: 2009年6月18日星期四02:44:49
我的目标是获得一个时间值,我可以传递到date(),以便以“漂亮”的格式轻松进行格式化。
将上述创建的时间从epoch转换为秒,添加偏移量,然后将其传递给date(),真的很简单吗?要注意什么gothcha?
$created_time = 'Thu, 18 Jun 2009 21:44:49 +0000';
$utc_offset = -28800;
$seconds = strtotime($created_time);
$localized_time = $seconds + $utc_offset;
echo date(DATE_RFC822, $localized_time);
由于
答案 0 :(得分:2)
PHP应该自动为你做事。我也强烈建议改为使用DateTime对象。
$dt = new DateTime($created_time);
echo $dt->format(DATE_RFC2822);
PHP的日期和时间功能是时区感知的..请确保您使用的是最新版本的PHP,因为在改进这些系统方面已经做了很多工作。
答案 1 :(得分:0)
您可以使用date_default_timezone_set在时区之间切换。在您的情况下,您将从用户的个人资料中传递时区信息。正如Evert建议的那样,如果您使用的是PHP 5> = 5.2,请使用更高级的DateTime类。
<?php
echo date('h:i:s')."\n";
date_default_timezone_set('Europe/Paris');
echo date('h:i:s')."\n";
date_Default_timezone_set('UTC');
echo date('h:i:s')."\n";