【问题标题】:PHP: Count the past hours / daysPHP:计算过去的小时数/天数
【发布时间】:2019-05-21 18:32:36
【问题描述】:

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

【问题讨论】:

  • @AlexHowansky 你能检查我更新的答案吗?这太棒了!

标签: php timestamp


【解决方案1】:
$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

【讨论】:

  • 我已经更新了我的问题。你能看一下吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-04-02
  • 1970-01-01
  • 2012-09-10
  • 2020-10-07
  • 2023-03-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多