使用PHP strotime()函数
我在不同的网站上收到了一个外部RSS提要,我注意到它们的发布日期格式都不同。 有些使用如下格式:使用PHP strotime()函数,php,javascript,time,Php,Javascript,Time,我在不同的网站上收到了一个外部RSS提要,我注意到它们的发布日期格式都不同。 有些使用如下格式: 2012-04-09T08:23:07Z Fri, 06 Apr 2012 01:25:43 0000 还有很多格式,但我只是给你们看了两个例子 现在,我希望所有内容都有一个统一的格式,所以我使用strotime()。这是我的代码: $date = "2012-04-09T08:23:07Z"; date( "F d, Y", strtotime( $date ) ); /* Result:
2012-04-09T08:23:07Z
Fri, 06 Apr 2012 01:25:43 0000
还有很多格式,但我只是给你们看了两个例子
现在,我希望所有内容都有一个统一的格式,所以我使用strotime()。这是我的代码:$date = "2012-04-09T08:23:07Z";
date( "F d, Y", strtotime( $date ) );
/* Result: April 09, 2012 */
我这里的问题是第二种格式Fri,2012年4月6日01:25:43 0000
最后有一个0000,这使得strotime()行为怪异
$date = "Fri, 06 Apr 2012 01:25:43 0000";
date( "F d, Y", strtotime( $date ) );
/* Result: April 06, 0000 */
显然,结果应该是2012年4月6日
我这里的问题是,当strotime()检测到一个最后有0000个字符的格式时,我怎么能不让它表现得怪异呢。你知道怎么做吗?非常感谢您的帮助!谢谢!:)
谢谢 把“0000”去掉怎么样?比如: $date=str_replace(“0000”和“,$date”)
把“0000”去掉怎么样?比如: $date=str_replace(“0000”和“,$date”) 试试这个:
<?php
$date = "Fri, 06 Apr 2012 01:25:43 0000";
if (strtotime($date) !== false)
{
$timestamp = strtotime($date);
echo date( "F d, Y", $timestamp );
}
else
{
echo "error";
}
?>
对于$date=“2012年4月6日星期五01:25:43 0000”;
输出错误
$date=“2012年4月6日星期五01:25:43”;
提供输出。尝试以下操作:
<?php
$date = "Fri, 06 Apr 2012 01:25:43 0000";
if (strtotime($date) !== false)
{
$timestamp = strtotime($date);
echo date( "F d, Y", $timestamp );
}
else
{
echo "error";
}
?>
对于$date=“2012年4月6日星期五01:25:43 0000”;
输出错误
$date=“2012年4月6日星期五01:25:43”;
提供输出。我很确定您有格式问题:
Fri, 06 Apr 2012 01:25:43 0000
注意0000
前面的两个空格?这不是巧合。原文大概是这样的:
Fri, 06 Apr 2012 01:25:43 +0000
它是通过
gmdate(DATE\u RFC822)
生成的。在URI中,+
符号通常被转换为空格。我想这是你的问题。我很确定你有格式问题:
Fri, 06 Apr 2012 01:25:43 0000
注意0000
前面的两个空格?这不是巧合。原文大概是这样的:
Fri, 06 Apr 2012 01:25:43 +0000
它是通过
gmdate(DATE\u RFC822)
生成的。在URI中,+
符号通常被转换为空格。我想这是你的问题。你有没有发现其他导致问题的日期时间格式?如果这是唯一的一个,您可能只需要使用以“0000”结尾的特殊大小写字符串。您是否发现任何其他导致问题的日期时间格式?如果这是唯一的一个,您可能只需要使用以“0000”结尾的特殊大小写字符串。是的,我也注意到,0000之前有一个+symbl,但当我将它存储在数据库中时,+符号消失了,是因为我试图mysql\u real\u escape\u string()它吗?不,mysql\u real\u escape\u string
没有转义+/code>字符,那么,当您从XML中提取它时,可能会发生这种情况?是的,我也注意到,0000之前有一个+symbl,但是当我将它存储在数据库中时,+symbl消失了,是不是因为我尝试了mysql\u real\u escape\u string()它?不是,mysql\u real\u escape\u string
没有转义+/code>字符,因此,当您从XML中提取它时,可能会发生这种情况?RFC822不指示GMT作为先决条件,因此它也可以以0800
结束。RFC822不指示GMT作为先决条件,因此它也可以以0800
结束。