0

別の Web サイトで外部の RSS フィード ポストを取得しています。私が気付いたのは、すべての公開日の形式が異なっていることです。次のようなフォーマットを使用するものもあります。

2012-04-09T08:23:07Z

Fri, 06 Apr 2012 01:25:43  0000

フォーマットはまだたくさんありますが、ここでは 2 つの例を示しました。

今、私はすべてを統一された形式にしたいので、strtotime() を使用しています。これが私のコードです:

$date = "2012-04-09T08:23:07Z";
date( "F d, Y", strtotime( $date ) );
/* Result: April 09, 2012 */

ここでの問題は2番目の形式ですFri, 06 Apr 2012 01:25:43 0000

最後に 0000 があるため、strtotime() の動作がおかしくなります。

$date = "Fri, 06 Apr 2012 01:25:43  0000";
 date( "F d, Y", strtotime( $date ) );
 /* Result: April 06, 0000 */

明らかに、結果は 2012 年 4 月 6 日になるはずです。

ここでの私の質問は、最後に 0000 があるフォーマットを検出したときに strtotime() が奇妙な動作をしないようにするにはどうすればよいかということです。これを行う方法はありますか?あなたの助けは大歓迎です! ありがとう!:)

ありがとう!

4

3 に答える 3

1

「0000」を削除するのはどうですか?何かのようなもの:

$date=str_replace("0000", "", $date);

于 2012-04-23T04:01:56.870 に答える
1

これを試して:

<?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";
 }

 ?>

for $date = "Fri, 06 Apr 2012 01:25:43 0000"; エラーを出力します。

$date = "2012 年 4 月 6 日金曜日 01:25:43"; 出力を与えます。

于 2012-04-23T04:02:30.440 に答える
1

フォーマットの問題があると確信しています:

Fri, 06 Apr 2012 01:25:43  0000

0000?の前にある 2 つのスペースに注意してください。それは偶然ではありません。元はおそらくこれです:

Fri, 06 Apr 2012 01:25:43 +0000

で生成されgmdate(DATE_RFC822)ます。URI では、+シンボルはしばしばスペースに変換されます。それはあなたの問題だと思います。

于 2012-04-23T04:12:34.210 に答える