0

似乎有很多方法可以在 php 中处理日期和时间按摩。我通常只处理当地时间。今天,我需要在 UTC 工作。

我正在查询 API,他们给我的关于任意记录的数据是:created: Thu, 18 Jun 2009 21:44:49 +0000 * 记录为“UTC 记录创建时间”

utc_offset: -28800 * 用户之间的差异重新

我需要将其转换为一个简单的字符串,以向用户显示数据在其本地时间提交的时间和日期。

我相信,如果在加利福尼亚州,以上内容会转化为:2009 年 6 月 18 日星期四 02:44:49 PM

我的目标是获得一个可以传递给 date() 的时间值,以便以“漂亮”格式轻松格式化。

是否真的像将上面创建的时间从纪元转换为秒,添加偏移量,然后将其传递给 date() 一样简单?有什么哥特式要注意的吗?

$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);

谢谢

4

2 回答 2

2

PHP 应该自动为您做事。我也强烈推荐使用 DateTime 对象。

$dt = new DateTime($created_time); echo $dt->format(DATE_RFC2822);

PHP 的日期和时间函数可以识别时区。确保您使用的是最新版本的 PHP,因为在改进这些系统方面已经做了很多工作。

于 2009-06-18T23:10:15.850 回答
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";
于 2009-06-19T01:40:20.163 回答