【发布时间】:2019-05-21 18:32:36
【问题描述】:
我在这里有一个这种格式的时间戳: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 分钟。好奇怪……
【问题讨论】:
-
@AlexHowansky 你能检查我更新的答案吗?这太棒了!