如果我有以下代码,我从我的数据库输出项目。我想知道如何检查是否有与今天相同的日期,然后输出的数据将回显'今天'而不是7-23-15,如果我正在查看昨天发布的内容,'昨天'也是如此。
然后我想看看我是否可以在数据库中中断datetime条目的时间部分,只返回时间?
我有DATETIME作为我的数据类型在我的数据库
$stmt2 = $con->prepare("SELECT `id`, `category_id`, `topic_id`, `post_creator`, `post_content`, `post_date` FROM forum_posts WHERE `category_id`=? AND `topic_id`=?");
if($stmt2===false) {
die();
} else {
//var_dump($stmt2);
$stmt2->bind_param("ii", $cid, $tid);
$stmt2->execute();
$stmt2->store_result();
$stmt2->bind_result($post_id, $post_category_id, $post_topic_id, $post_creator, $post_content, $post_date);
//$result2 = $stmt2->get_result();
if (!$stmt2) {
throw new Exception($con->error);
}
}
$num_rows2 = $stmt2->num_rows;
if($num_rows2) {
while($stmt2->fetch()) {
$post_id;
$post_category_id;
$post_topic_id;
$post_creator;
$post_content;
$post_date;
Replace:
$stmt2 = $con->prepare("SELECT `id`, `category_id`, `topic_id`, `post_creator`, `post_content`, `post_date` FROM forum_posts WHERE `category_id`=? AND `topic_id`=?");
:
$stmt2 = $con->prepare("SELECT `id`, `category_id`, `topic_id`, `post_creator`, `post_content`, IF(DATE(`post_date`) = CURDATE(), 'Today', DATE(`post_date`)) FROM forum_posts WHERE `category_id`=? AND `topic_id`=?");
这将只返回日期部分。如果是当前日期,它将返回'Today'。
这个PHP函数接受Unix时间戳并以您想要的格式返回它:
function fixDate($strDateTime) {
$strFormat = 'Y-m-d';
$intTimeStamp = strtotime($strDateTime);
$strDate = date($strFormat, $intTimeStamp);
$strTime = date('H:i', $intTimeStamp);
if($strDate == date($strFormat)) {
return "Today " . $strTime;
}
elseif($strDate == date($strFormat, strtotime('yesterday'))) {
return "Yesterday " . $strTime;
}
else {
return $strDate . " " . $strTime;
}
}
现在,当你想用你的日期做一些事情,比如输出它,而不是
echo $post_date;
你做了echo fixDate($post_date);
如果您希望它的格式与YYYY-MM-DD
不同,只需更改strFormat
的值。PHP文档的相关部分在这里