我正在制作一个新闻订阅源,它将日期存储为像Tuesday 05 June 2012 04:14:44 PM
这样的字符串。PHP按日期排序?
我想做两件事。
- 按日期排序的新闻订阅(最新到最旧)
- 如果日期是当天的日期,只显示时间(这也是排序)。
我正在制作一个新闻订阅源,它将日期存储为像Tuesday 05 June 2012 04:14:44 PM
这样的字符串。PHP按日期排序?
我想做两件事。
此排序方法无效。您可以添加ID列并按ID排序。每次有人发布帖子,并将其插入到Feed中时,都会插入一个递增的ID。它与日期排序并行 - 你想要最新的。
这是最推荐和最有效的排序方法。
我想过之前,但我想过的东西将无法使用它。谢谢:) – user1436735
嗯......但为什么?我认为在特殊的日期时间字段中存储日期将解决所有问题。带ID - 如何选择全部'昨天'的帖子? – k102
我会更改存储以存储一些“unix timestamp”。从那你可以打印出whatever format of date you like。而且,它是一个数字,非常容易排序。
这很完美。谢谢!我不知道你可以用日期函数格式化时间戳。 – user1436735
不,当你发现时,这是一种幸福..也曾经一度遇到过这种问题;) – Gustav
我想这可以解决您的问题,但我建议您尽可能修改表格设计。
$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/>";
}
正如他们所说[强烈推荐**使用** mysqli **扩展名代替] (http://php.net/manual/en/mysqli.overview.php) –
。:哦,对不起,抱歉that.tnx! :) – sephoy08
'存储日期作为一个字符串'什么在地球上使人们这样做?不,我真的很感兴趣,因为我找不到任何理由。 – k102
我有它按日期排序,但我不知道如何排序的时间,至少不是没有很多嵌入式如果和while语句等 – user1436735
您可以存储消息的id,或使用strtotime( ),你会得到数字,数字越高,最近它是,你也可以然后将其转换为字符串与date()函数,谷歌是你的朋友:) – HamZa