PHP:计算过去的小时数/天数

时间:2019-05-21 18:32:37

标签: php timestamp

我在这里使用此格式的时间戳记:2019-05-21 19:57:21 现在,我想显示该时间戳记过去的小时/天。

例如,当时间戳记早于2分钟时,我要打印2 minutes直到达到59 minutes

据了解,这必须是几个小时。因此,例如在59 hours之后应为1 hour

到达24 hours后,应该说1 day2 days。一周后,它应打印1 week(我们将把岁月留在外面)。

这是我自己所做的。我不知道该如何完成:

$timestamp = '2019-05-21 19:57:21';

function calculate_notification_time( $notification_time ) {

    $now  = new DateTime( date( 'Y-m-d H:i:s' ) );
    $past = new DateTime( $notification_time );
    $dt   = $now->diff( $past );

    error_log( print_r( $now, true ) );

    if ( $dt->y > 0 ) {
        $number = $dt->y;
        $unit   = 'Jahr';
    } else if ( $dt->m > 0 ) {
        $number = $dt->m;
        $unit   = 'Monat';
    } else if ( $dt->d > 0 ) {
        $number = $dt->d;
        $unit   = 'Tag';
    } else if ( $dt->h > 0 ) {
        $number = $dt->h;
        $unit   = 'Stunde';
    } else if ( $dt->i > 0 ) {
        $number = $dt->i;
        $unit   = 'Minute';
    } else if ( $dt->s > 0 ) {
        $number = $dt->s;
        $unit   = 'einigen Sekunden';
    }

    if ( ! empty( $unit ) && ! empty( $number ) && $number > 1 ) {

        switch ( $unit ) {
            case 'Jahr':
                $unit .= 'en';
                break;
            case 'Monat':
                $unit .= 'en';
                break;
            case 'Tag':
                $unit .= 'en';
                break;
            case 'Stunde':
                $unit .= 'n';
                break;
            case 'Minute':
                $unit .= 'n';
                break;
            default:
                break;
        }

        return $number . ' ' . $unit;
    }

    return 'Zeit nicht Verfügbar';
}

更新:

借助答案,我已经弄清楚了。奇怪的是,纪要完全错了,而且倒退了。所以20分钟前是35分钟,现在是15分钟。太奇怪了....

1 个答案:

答案 0 :(得分:0)

$timestamp = '2019-05-21 11:49:21';
$unixTimestampS = strtotime($timestamp);
$dNow =  strtotime("now");
$diff = $dNow- $unixTimestampS;
if($diff <60) {
    $result =  $diff. ' seconds ago'; // When it's not 1 minute
} elseif (($dNow- $unixTimestampS) > 60 && ($dNow- $unixTimestampS) < 3600) {
    $result = $diff . ' minute ago'; // For example: 19 minutes
}
echo $result;

或者这里提到一种更好的方法 How to get time difference in minutes in PHP