我在这里使用此格式的时间戳记: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分钟。太奇怪了....
答案 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