PHP获取日期为Unix Epoch时间

时间:2009-09-30 05:30:01

标签: php datetime twitter

我刚刚使用他们的XML Feed获得了一些推文,并且得到了这样的日期/时间

  

Tue Sep 29 22:30:51 +0000 2009

我尝试在此使用strtotime(),但它没有产生正确的结果。

我稍后使用

echo date($dateTimeFormat, $twitterUnixTime);

我知道我可以使用正则表达式,但从它的外观来看它会很复杂(并且需要使用回调,将'Sep'转换为数字。根据我的理解,strtotime()可以轻松做MySQL日期(2009-09-30 13:00:00)和其他一些(通常来自RSS提要)。

我可以在这里将这个日期/时间作为Unix纪元时间吗?

更新

这是我的代码

$dateTime = $status->created_at; // Tue Sep 29 22:30:51 +0000 2009

$date = strtotime($dateTime);

$dateTimeFormat = 'j/n/y g:ia';

echo date($dateTimeFormat, $date); // 2/2/09 12:01am

更新

对不起伙计们,完全是我的错。我有一个变量输入错误。谢谢你的回答!

1 个答案:

答案 0 :(得分:3)

您使用strtotime时遇到的问题是什么?

使用此代码:

$str = 'Tue Sep 29 22:30:51 +0000 2009';
$ts = strtotime($str);

var_dump(date('Y-m-d H:i:s', $ts));

我得到了这个输出:

string '2009-09-30 00:30:51' (length=19)

那么,错误2小时 - 是你遇到的那种问题吗?

如果是,可能是时区问题:我在法国,与GMT / UTC时间相差2小时。


使用date_default_timezone_set函数更改语言环境(设置GMT时区中的一个),使用此行之前的行:

date_default_timezone_set('Europe/London');

获取此输出:

string '2009-09-29 23:30:51' (length=19)

哪种看起来像是期望的结果?


您还可以更改php.ini中的date.timezone设置;但可能还有一些其他的影响,所以不确定这是多么好主意......

也许您可以使用“UTC”时区,顺便说一下,这样:

date_default_timezone_set('UTC');

考虑到我们愿意/意味着什么,它实际上可能是一个更好的主意......