Jump to content
jdlucena

Exibir campo horas excel no PHP

Recommended Posts

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???

 

Share this post


Link to post
Share on other sites

Fiz assim, mas não deu certo.

#a célula está na coluna 1 e linha 40
$hora = $objPHPExcel->getActiveSheet()->getCellByColumnAndRow(1, 40)->getValue();

echo gmdate('d/m/Y - H:i:s', $hora);

Resultado: 01/01/1970 - 00:00:03

 

Como faço para transformar em 77:00:00???

Share this post


Link to post
Share on other sites

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

 

Lembrando que, no site acima, o GMT é +2 (Central European Summer Time)

Share this post


Link to post
Share on other sites

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?

Share this post


Link to post
Share on other sites

você não precisa usar a função gmdate. Use diretamente o valor $hora. Qual é o valor em $hora?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By violin101
      Caros amigos, saudações...
       
      Fiz várias pesquisa, mas não consegui entender como devo fazer corretamente.
       
      Tenho um Cadastro de Produto/Clientes/etc.
       
      Gostaria de após clicar no Button ADICIONAR ou GRAVAR, quero mostrar na tela a seguinte mensagem:
      msg:
      Aguarde Processando...
       
      obs.: em alguns sistema até parece uma MODAL, com barra de progresso.
       
      Para impedir que o usuário fica Clicando nos Buttons.
       
      Alguém poderia me auxiliar de como devo fazer isso ?
       
      Grato,
       
      Cesar
    • By alysson122010
      Galera estou começando a trabalhar com datatables porem tenho uma dificuldade pq tipo até 200 registros por pagina é aceitavel mas penso quando tiver 2000 registro carregar tudo numa pagina so da errado pq é muitos dados e pode travar tudo.
      Como posso fazer para listar com limite por pagina ou alguma maneira para poder colocar varios dados sem travar.
       
      estou usando assim:
      <script type="text/javascript">        $(document).ready(function() {             $('#example').DataTable({         "order": [[ 0, "desc" ]],         "language": {             "url": "//cdn.datatables.net/plug-ins/1.10.21/i18n/Portuguese-Brasil.json"         }     });         } );        </script> <table id="example" class="table table-striped table-bordered" style="width:100%">         <thead>             <tr>                 <th>Name</th>                 <th>Position</th>                 <th>Office</th>                 <th>Age</th>                 <th>Start date</th>                 <th>Salary</th>             </tr>         </thead>         <tbody>             <tr>                 <td>Tiger Nixon</td>                 <td>System Architect</td>                 <td>Edinburgh</td>                 <td>61</td>                 <td>2011/04/25</td>                 <td>$320,800</td>             </tr>             <tr>                 <td>Garrett Winters</td>                 <td>Accountant</td>                 <td>Tokyo</td>                 <td>63</td>                 <td>2011/07/25</td>                 <td>$170,750</td>             </tr>             <tr>                 <td>Ashton Cox</td>                 <td>Junior Technical Author</td>                 <td>San Francisco</td>                 <td>66</td>                 <td>2009/01/12</td>                 <td>$86,000</td>             </tr>             <tr>                 <td>Cedric Kelly</td>                 <td>Senior Javascript Developer</td>                 <td>Edinburgh</td>                 <td>22</td>                 <td>2012/03/29</td>                 <td>$433,060</td>             </tr>             <tr>                 <td>Airi Satou</td>                 <td>Accountant</td>                 <td>Tokyo</td>                 <td>33</td>                 <td>2008/11/28</td>                 <td>$162,700</td>             </tr>             <tr>                 <td>Brielle Williamson</td>                 <td>Integration Specialist</td>                 <td>New York</td>                 <td>61</td>                 <td>2012/12/02</td>                 <td>$372,000</td>             </tr>             <tr>                 <td>Herrod Chandler</td>                 <td>Sales Assistant</td>                 <td>San Francisco</td>                 <td>59</td>                 <td>2012/08/06</td>                 <td>$137,500</td>             </tr>             <tr>                 <td>Rhona Davidson</td>                 <td>Integration Specialist</td>                 <td>Tokyo</td>                 <td>55</td>                 <td>2010/10/14</td>                 <td>$327,900</td>             </tr>             <tr>                 <td>Colleen Hurst</td>                 <td>Javascript Developer</td>                 <td>San Francisco</td>                 <td>39</td>                 <td>2009/09/15</td>                 <td>$205,500</td>             </tr>         </tbody>         <tfoot>             <tr>                 <th>Name</th>                 <th>Position</th>                 <th>Office</th>                 <th>Age</th>                 <th>Start date</th>                 <th>Salary</th>             </tr>         </tfoot>     </table> <script type="text/javascript" language="javascript" src="https://cdn.datatables.net/1.10.22/js/jquery.dataTables.min.js"></script> <script type="text/javascript" language="javascript" src="https://cdn.datatables.net/1.10.22/js/dataTables.bootstrap4.min.js"></script>  
    • By AlexandrePrezzi
      Seguinte
      Tenho uma página chamada  "teste.php" nessa página tem um formulário com vários campos que o usuário usa para fazer um filtro dos campos a serem pesquisado...
       
      Ao clicar no Pesquisar (submit) ... o action da página faz a seguinte ação
       
      script type="text/javascript"> $(function($){ $('#meuFormulario').submit(function(){ var dados = jQuery(this).serialize(); jQuery.ajax({ type: "POST", url: "src/controller/request_teste.php", data: dados, cache: false, beforeSend: function() { $('#resultPesq').html("Carregando..."); }, success: function(e) { //window.alert(e); $('#resultPesq').html(e); }, error: function() { $('#resultPesq').html('Não foi encontrado dados!'); } }); return false; }); }); </script> O arquivo "request_teste.php", é quem recebe os dados do POST e faz o  tratamento desses dados....
       
      Ao final desse arquivo tem um  require_once 'result_teste.php' que vem a ser o arquivo onde irá mostrar o resultado da pesquisa.
       
      Nesse arquivo eu fiz uma páginação ao final do resultado.
       
      Entao primeiramente o link que estou acessando é 
       
      principal.php?link=teste.php  (abre a pagina com o formulário)
      ao clicar em pesquisar o link nao muda
       
      quando clico em página 2, é feito um refresh e a url fica principal.php?link=teste.php&pag=2
       
      O que acontece é que como a página faz um refresh eu perco todos dados do meu POST e tambem preciso clicar no botão pesquisar pra carregar os dado da página 2.
       
      Alguem sabe como ajustar isso ?

      Se precisarem de mais informações me avisem
       
       
       
    • By New Job
      Tenho um checkout pagseguro configurado em um site e gostaria de ajustar o código. Linguagem é PHP.
    • By Sapinn
      Iai galera beleza? Estou com um erro simples aqui como eu faço para estender minha conexão para outros arquivos ? Estou tentado fazer mas está dado um erro aqui
       
      arquivo connection.php
       
      <?php
      class Conexao{
          public $db_name = 'pessoa';
          public $host = 'localhost';
          public $user = 'root';
          public $pass = '';
       
          public function __construct()
          {
              try {
                  $pdo = new PDO("mysql:db_name=".$this->db_name.";host=".$this->host,$this->user,$this->pass);                                         
              } catch (PDOException $e) {
                  echo "Erro no banco ".$e->getMessage();
                  exit();
              }
          }
           
      }
       
      arquivo Pessoa.php
       
      <?php
      include 'connection.php';
      class Pessoa {
          private $pdo;
       
          public function __construct()
          {   
              $this->pdo = new Conexao();
          }
       
          public function buscarDados(){
              $stmt = [];
              $sql = $this->pdo->query("SELECT * FROM pessoa
              order by id desc");
              $stmt = $sql->fetchAll(PDO::FETCH_ASSOC);
              return $stmt;
          }
      }
       
      arquivo index.php
       
      <?php
          require_once 'models/Pessoa.php';
          $p = new Pessoa();
      ?>
      <!DOCTYPE html>
      <html lang="pt-br">
      <head>
          <meta charset="UTF-8">
          <meta http-equiv="X-UA-Compatible" content="IE=edge">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <link rel="stylesheet" href="assets/css/style.css">
          <title>Crud PDO </title>
      </head>
      <body>
          <section id="esquerda">
              <form action="">
                  <h2>Cadastrar Pessoa</h2>
                  <label for="nome">Nome: </label>
                  <input type="text" name="nome" id="nome">
                  <label for="telefone">Telefone: </label>
                  <input type="text" name="telefone" id="telefone">
                  <label for="email">Email:</label>
                  <input type="text" name="email" id="email">
                  <input type="submit" value="Cadastrar">
              </form>
          </section>
          <section id="direita">
          <?php
              $p->buscarDados();
          ?>
              <table>
                  <tr id="titulo">
                      <td>Nome</td>
                      <td>Telefone</td>
                      <td colspan="2">Email</td> 
                  </tr>
                  <tr>
                      <td>Maria</td>
                      <td>00000000</td>
                      <td>maria@gmail.com</td>
                      <td><a href="">Editar</a> <a href="">Excluir</a></td>
                  </tr>
              </table>
          </section>
      </body>
      </html>
       
      Erro que é apresentado:
      Fatal error: Uncaught Error: Call to undefined method Conexao::query()
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.