У меня есть метка времени в этом формате: 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 минут.Так странно ....