1

皆のためのさらに別の PHP 日付の質問 - 私は完全に動作する私のサイトの英語版の現在のコードを持っています:

$article = &$articles[$i];

if($currentdate != date("F Y", strtotime($article->getDate()))) {   
    $currentdate = date("F Y", strtotime($article->getDate()));                 
    $current_content1 .= "<div class='press-articles-heading'>" . $currentdate . "    </div>";
}   

基本的にこれが行うことは、データベースからレコードを取得し、日付を比較して、月のヘッダーが 1 回だけ表示されるようにすることです。たとえば、2012 年 7 月、その月のすべてのレコード、2012 年 6 月などです。

英語以外のバージョンのサイトで同じコードを使用すると、バグが発生します。

$article = &$articles[$i];

if($currentdate != date("F Y", strtotime($article->getDate()))) {   
    $currentdate = strftime("%B %Y", strtotime($article->getDate()));                 
    $current_content1 .= "<div class='press-articles-heading'>" . $currentdate . "</div>";
}   

ここで何が起こるかというと、同じにもかかわらず、すべての db レコードの月ヘッダーを取得します。

バグがどこにあるかわかりません。誰かアイデアはありますか?

どんな助けでも大歓迎です。

アップデート

質問を投稿する前にいくつか試してみましたが、質問をシンプルにするために省略した方がよいと思いました。

私は次のことを試しました:

$article = &$articles[$i];

if($currentdate != date("F Y", strtotime($article->getDate()))) {   
    $translated_date = strftime("%B %Y", strtotime($article->getDate()));                 
    $current_content1 .= "<div class='press-articles-heading'>" . $translated_date . "</div>";
}

しかし、それはそれを解決しませんでした

4

2 に答える 2

1

これを試して:

$article = &$articles[$i];

$timeString = strtotime($article->getDate());
$numericDate = strftime('%m %Y', $timeString);

if($currentDate != $numericDate) {
    $currentDate = $numericDate;
    $translatedDate = strftime('%B %Y', $timeString);                 
    $current_content1 .= "<div class='press-articles-heading'>" . $translatedDate . "</div>";
}

これにより、月と年の数値に基づいて比較が行われますが、ローカライズされたテキスト値が表示されます。追加の変数を使用して、日付の解析結果をキャッシュしました。

于 2012-08-07T17:51:32.207 に答える
0

の値と の値を比較していdate('F Y')ますstrftime('%B %Y')。それらはおそらく一致しません。

于 2012-07-30T09:26:24.377 に答える