Doubt with if and elseif PHP

Asked

Viewed 77 times

0

I’m trying to make an algorithm that divides the value of the function strtotime and aired in minutes, hours. And now I’m trying to put in days, created the variable $datadia, but I’m unable to display if the value is above 24 hours

The result is only displayed in minutes and then hours if it is above 60 minutes.

$phpdate = strtotime( $data );
$mysqldate = date( 'd-m-Y H:i:s', $phpdate );
$data1 = strtotime($mysqldate);
$data2 = strtotime("now");
$data3 = (int)(-($data1 - $data2)/60);
$data4 = (int)(($data3)/60);
$datadia = (int)(($data4)/24);

if (!empty($data) and $data3<=60){
   echo "Chegou $mysqldate<br>há $data3 minutos atrás<br>";                          
}
elseif (!empty($data)) {
   echo "Chegou $mysqldate <br>há $data4 horas atrás<br>";
}
 elseif (!empty($data)) {
   echo "Chegou $mysqldate <br>há $datadia dias atrás<br>";
}
  • The problem would not be to be using variables of type int? Being x < 60 the result of x / 60 shall be less than 1. In int that would be a 0.

1 answer

1


One possibility is to use the Class DateTime for date and time representation.

(PHP 5 >= 5.2.0, PHP 7)

<?php
$data = '29/05/2019 18:22:50';
$data1 = DateTime::createFromFormat('d/m/Y H:i:s', $data);
$data2 = new DateTime();
$dataResult = $data1->diff($data2);

$mysqldate = $data2->format('d/m/Y');

if ($data1 < $data2) {
    if ($dataResult->days) {
        $mensagemDia = $dataResult->days . ' Dia (s) ';
    }
    if ($dataResult->h) {
        $mensagemHora = $dataResult->h . ' Horas ';
    }

    if ($dataResult->i) {
        $mensagemMinuto = $dataResult->i . ' minutos ';
    }
    echo "Chegou em " . $mysqldate . " há " . $mensagemDia . $mensagemHora . $mensagemMinuto . $dataResult->s . ' segundos';
}else{
    echo "Ainda não chegou!";
}

Using strtotime

<?php
    $data = '2019-05-29 11:22:50';
    $data1 = strtotime($data);
    $data2 = strtotime("now");

    $diff = ($data2 - $data1);

    //Calculo de dias
    $calculoDia = 60 * 60 * 24; // minutos em dias

    $dia = (int)($diff / $calculoDia);
    $restoHora = (int)($diff % $calculoDia); //o resto de horas com uso do mod

    if (!empty($dia)) {
        $diff = $restoHora;    
    }

    //Calculo de horas
    $calculoHora = 60 * 60; // minutos em hora

    $hora = (int)($diff / $calculoHora);
    $restoMinuto = (int)($diff % $calculoHora); //o resto de minutos com uso do mod

    if (!empty($hora)) {
        $diff = $restoMinuto;    
    }

    $calculoMinuto = 60;
    $minuto = (int)($diff / $calculoMinuto); //quantos minutos
    $segundo = (int)($diff % $calculoMinuto); //o resto de minutos com uso do mod

    echo '<br>';

    if ($data1 < $data2) {
        if ($dia) {
            $mensagemDia = $dia . ' Dia (s) ';
        }
        if ($hora) {
            $mensagemHora = $hora . ' Horas ';
        }
        if ($minuto) {
            $mensagemMinuto = $minuto . ' minutos ';
        }
        echo "Chegou em " . $mysqldate . " há " . $mensagemDia . $mensagemHora . $mensagemMinuto . $segundo . ' segundos';
    }else{
        echo "Ainda não chegou!";
    }

Browser other questions tagged

You are not signed in. Login or sign up in order to post.