繁体   English   中英

PHP:计算过去几小时/天

[英]PHP: Count the past hours / days

我有一个这种格式的时间戳: 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分钟。 这么奇怪....

$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;

或者这里提到了一个更好的方法如何在PHP中获得几分钟的时差

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM