我创建了一个显示两个日期之间差异的函数:实际和数据库。
我有以下代码:
$date_a = new DateTime( 'now' );
$date_b = new DateTime( $Time );
$interval = date_diff( $date_b, $date_a );
if ( $interval->format( '%m' ) >= 1 ) {
return 'Dodano: ' . $interval->format( '%m' ) . ' miesięcy temu';
} elseif ( $interval->format( '%d' ) >= 1 ) {
return 'Dodano: ' . $interval->format( '%d' ) . ' dni temu';
} elseif ( $interval->format( '%h' ) >= 1 ) {
return 'Dodano: ' . $interval->format( '%h' ) . ' godz. temu';
} elseif ( $interval->format( '%i' ) >= 1 ) {
return 'Dodano: ' . $interval->format( '%i' ) . ' min. temu';
} elseif ( $interval->format( '%s' ) >= 1 ) {
return 'Dodano: ' . $interval->format( '%s' ) . ' sekund temu';
}
月,日,小时和分钟都可以,但是在秒显示:
Dodano: 59 min. temu
不
Dodano: n sekund temu
为什么?
答案 0 :(得分:0)
由于服务器时间不符合您的预期,您的$ date_a提前一小时。
当我在我的服务器上试用它时,我也很困惑,但是在var_dump-ing $ date_a之后,很明显这就是问题。
希望能够为你解决它。
答案 1 :(得分:-1)
您需要调用DateInterval :: format()以将该差异显示为字符串。 将以下行添加到您的代码中。 $ interval->格式('Y-m-d H:i:s');