Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Estou usando o PHPExcel para mostrar campos de uma planilha excel no PHP, porém tem um campo com o seguinte dado:
03/01/1900 05:00:00
No qual é exibido: 77:00
Preciso que mostre no PHP o mesmo valor que exibe no excel, o valor de 77:00
O valor que está sendo mostrado é 3.2083333
Como faço para exibir 77:00???
Cara, já tentou passar no formato original do BD? YYYY-mm-dd H:i:s
Faça os cálculos necessários para isso, utilize a biblioteca DateTime. Você pode utilizar a classe DateInterval que lhe entregará a diferença entre duas datas. Veja qual é a base de cálculo da data.
Para que o dia '03/01/1900 05:00:00' tenha 77 horas de duração, qual deve ser a data base?
$date = new \DateTime('2017-08-07 00:00:00'); // initial date
$dateInterval = $date->diff(new \DateTime()); // now
$hours = ((int)$dateInterval->format('%a') * 24) + (int)$dateInterval->format('%h');
printf('%s:%s:%s' , $hours , $dateInterval->format('%I'), $dateInterval->format('%S'));
[https://3v4l.org/895Iv](https://3v4l.org/895Iv)
Lembrando que, no site acima, o GMT é +2 ([Central European Summer Time](https://greenwichmeantime.com/time-zone/europe/european-union/central-european-time/))Essa fórmula Gabriel Heming dá certo se eu setar as datas manualmente, porém a data que ele está puxando do excel é a seguinte:
$hora = $objPHPExcel->getActiveSheet()->getCellByColumnAndRow(1, 40)->getValue();
echo gmdate('Y-m-d H:i:s', $hora);
// resultado: 1970-01-01 00:00:03
$hora = ($hora - 25569) * 86400;
echo gmdate('Y-m-d H:i:s', $hora);
// resultado: 2036-02-08 11:28:16
Como faço para o resultado ser: 1900-01-03 05:00:00 igual como está no excel?
você não precisa usar a função gmdate. Use diretamente o valor $hora. Qual é o valor em $hora?
$hora = $objPHPExcel->getActiveSheet()->getCellByColumnAndRow(1, 40)->getValue();
echo $hora;
// resultado: 3.2083333Tente desta forma:
Fiz assim, mas não deu certo.
#a célula está na coluna 1 e linha 40