[英]PHP: Count the past hours / days
我有一个这种格式的时间戳: 2019-05-21 19:57:21
现在我想显示从这个时间戳过去的小时/天。
例如,当时间戳超过2分钟时,我想打印2 minutes
直到达到59 minutes
。
从知道它必须是几个小时。 因此,例如在59 hours
它应该是1 hour
。
达到24 hours
,应该说1 day
, 2 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.