簡體   English   中英

如何檢查 Php 中的某件事是否超過 7 天或 1 個月前?

[英]How can I check if something was more than 7 days or 1 month ago in Php?

我在檢查某件事是否超過 7 天或 1 個月前並需要幫助時遇到了一點問題。 整個事情應該是一個小聊天,從數據庫中讀取消息。 有一個存放時間的日期,我想檢查消息是否超過 7 天或 1 個月。

不幸的是,整個事情並沒有像我想象的那樣工作,我想知道錯誤在哪里。

這是我的代碼:

if(!empty($daten)){
    $reversed = array_reverse($daten);

    $isweek = false;
    $ismonth = false;
    $last_created;
    foreach ($reversed as $content) {
        $username = getUserName($conn, $content->sender_userid);
        $username = array_shift($username);
        $date = date("d M",strtotime($content->created));
        $time = date("H:i",strtotime($content->created));
        $today = date("d M");
        
        if(strtotime($today) < strtotime('-30 day')){
            if($ismonth == false){    
                echo '<p class="text-center">Last Month</p>';
                $ismonth = true;
            }
        } else if(strtotime($today) < strtotime('-7 day')){
            if($isweek == false){
                echo '<p class="text-center">Last Week</p>';
                $isweek = true;
            }
        }  else if(strtotime($today) == strtotime($date)){
            $date = "Today";
            echo '<p class="text-center">Today</p>';
        } else {
            if($last_created != $date){
                $date = date("D",strtotime($content->created));
                echo '<p class="text-center">' . $date . '</p>';
            }
        }

        echo '<div class="media col-sm-8 offset-md-4">';
        echo '<div class="media-body receive">';
        echo $content->message;
        echo '<span class="time">';
        echo '<i class="fas fa-check m-r-5"></i>' . $date . ' um ' . $time;
        echo '</span>';
        echo '</div>';
        echo '</div>';

        $last_created = date("d M",strtotime($content->created));
    }
} else {
    echo '<p class="text-center">Nothing here.</p>';
}

您的$last_created始終為0

strtotime($last_created)更改為 strtotime($content- strtotime($content->created)

if(strtotime($content->created) < strtotime('-7 day')){
    if($isweek == false){
        echo '<p class="text-center">Last Week</p>';
        $isweek = true;
    }
} else if(strtotime($content->created) < strtotime('-30 day')){
    if($ismonth == false){    
        echo '<p class="text-center">Last Month</p>';
            $ismonth = true;
    }
}
....

更新:

$array = [
    [
        'message' => 'Test 7',
        'created' => '2021-02-08 16:02:22'
    ],
    [
        'message' => 'Test 6',
        'created' => '2021-02-07 10:02:48'
    ],
    [
        'message' => 'Test 5',
        'created' => '2021-02-05 19:02:23'
    ],
    [
        'message' => 'Test 4',
        'created' => '2021-02-05 15:02:23'
    ],
    [
        'message' => 'Test 3',
        'created' => '2021-02-04 15:02:16'
    ],
    [
        'message' => 'Test 2',
        'created' => '2021-01-30 00:17:12'
    ],
    [
        'message' => 'Test 1',
        'created' => '2021-01-28 00:14:09'
    ]
];

$isweek = false;
$ismonth = false;
$istoday = false;

foreach($array as $output){
    $created = $output['created'];

    if(strtotime($created) >= strtotime(date('Y-m-d 00:00:00'))){
        if($istoday == false){    
            echo '<b>Today</b><br>';
            $istoday = true;
        }
    } else if(strtotime($created) >= strtotime('-7 days') && strtotime($created) < strtotime(date('Y-m-d 00:00:00'))){
        if($isweek == false){
            echo '<b>Last Week</b><br>';
            $isweek = true;
        }
    } else if(strtotime($created) > strtotime('-30 days')){
        if($ismonth == false){    
            echo '<b>Last Month</b><br>';
            $ismonth = true;
        }
    }

    echo $output['message'];
    echo '<br>';
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM