我刚刚使用他们的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
更新
对不起伙计们,完全是我的错。我有一个变量输入错误。谢谢你的回答!
答案 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');
考虑到我们愿意/意味着什么,它实际上可能是一个更好的主意......