将日期时间输出更改为“今天”并中断时间


Changing datetime output to say Today and breaking off the time

如果我有以下代码,我从我的数据库输出项目。我想知道如何检查是否有与今天相同的日期,然后输出的数据将回显'今天'而不是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文档的相关部分在这里