0

のような文字列として日付を格納するニュース フィードを作成していますTuesday 05 June 2012 04:14:44 PM

やりたいことは2つ。

  1. ニュース フィードを日付順に並べ替える (新しいものから古いものへ)
  2. 日付が今日の日付の場合は、時間のみを表示します (これもソートされます)。
4

3 に答える 3

3

「 unix タイムスタンプ」を保存するようにストレージを変更します。そこから、好きな形式の日付を印刷できます。また、それは数字であり、非常に簡単にソートできます。

于 2012-06-05T07:28:38.353 に答える
0

これで問題が解決すると思いますが、可能であればテーブルのデザインを変更することをお勧めします。

$result = mysql_query("SELECT * FROM newsfeed");

$records = array();
$i = 0;
while ($row = mysql_fetch_array($result))
{
    $records[$i] = array('news_idPK' => $row['news_idPK'],
                     'date' => date("Y-m-d H:i:s", strtotime($row['date'])),
                     'news' => $row['news']
    );
    $i++;
}
usort($records, "cmp");

function cmp($a, $b) {
    $a = strtotime($a['date']);
    $b = strtotime($b['date']);
    return $a - $b;
}

$ctr = count($records)-1;
for($x=$ctr; $x>=0; $x--)
{
    $newsDate = date("l d F Y h:i:s A", strtotime($records[$x]['date']));
    if(date("Y-m-d", strtotime($records[$x]['date'])) == date("Y-m-d"))
    {
        $newsDate = date("h:i:s A",strtotime($records[$x]['date']));
    }
    echo $records[$x]['news_idPK']." - ".$newsDate." - ".$records[$x]['news']." <br/>";
}
于 2012-06-05T09:09:14.847 に答える
-2

この並べ替え方法は効果的ではありません。ID 列を追加して、ID で並べ替えることができます。誰かが投稿を投稿し、それがフィードに挿入されるたびに、増分された ID が挿入されます。それは日付の並べ替えと同じです - あなたは最新のものを求めています。

これは、最も推奨される効果的な並べ替え方法です。

于 2012-06-05T07:22:08.927 に答える