使用PHP strotime()函数

使用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:

我在不同的网站上收到了一个外部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: 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
结束。