回答編集履歴

2 よりスマートに

motuo

motuo score 2998

2017/09/08 14:25  投稿

例えばですが、下記の形で如何でしょうか?
```PHP
<?PHP
$now = new DateTime('2017-09-08 14:00:00');//基準日
$days = [
   new DateTime('2017-09-08 14:59:00'),//比較対象1
   new DateTime('2017-09-08 15:00:00'),//比較対象2
   new DateTime('2017-09-09 14:00:00'),//比較対象3
   new DateTime('2017-09-13 14:00:00') //比較対象4
];
foreach ($days as $value) {
   $interval = $value->diff($now);
   if(if($interval->format('%y')>=1 or $interval->format('%m')>=1 or $interval->format('%d')>=5){
   if($interval->format('%a')>=5){
       echo "5日以上前";
   }elseif ($interval->format('%d')>=1) { 
       echo $interval->format('%d')."日前";
   }elseif($interval->format('%h')>=1){
       echo $interval->format('%h')."時間前";
   }else{
       echo $interval->format('%i')."分前";
   }
   echo nl2br("\n");
}
?>
```
> 出力結果
59分前
1時間前
1日前
5日以上前
1 5日以上の判定時に年月を考慮に入れていなかったので

motuo

motuo score 2998

2017/09/08 14:24  投稿

例えばですが、下記の形で如何でしょうか?
```PHP
<?PHP
$now = new DateTime('2017-09-08 14:00:00');//基準日
$days = [
   new DateTime('2017-09-08 14:59:00'),//比較対象1
   new DateTime('2017-09-08 15:00:00'),//比較対象2
   new DateTime('2017-09-09 14:00:00'),//比較対象3
   new DateTime('2017-09-13 14:00:00') //比較対象4
];
foreach ($days as $value) {
   $interval = $value->diff($now);
   if($interval->format('%d')>=5){
   if(if($interval->format('%y')>=1 or $interval->format('%m')>=1 or $interval->format('%d')>=5){
       echo "5日以上前";
   }elseif ($interval->format('%d')>=1) { 
       echo $interval->format('%d')."日前";
   }elseif($interval->format('%h')>=1){
       echo $interval->format('%h')."時間前";
   }else{
       echo $interval->format('%i')."分前";
   }
   echo nl2br("\n");
}
?>
```
> 出力結果
59分前
1時間前
1日前
5日以上前

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る