Ir para conteúdo
Fórum Script Brasil
  • 0

Existe Algum Tipo Time Para Campo Ser Gravado Em Milésimos?


::..Hunter..::

Pergunta

2 respostass a esta questão

Posts Recomendados

  • 0

Do manual:

Como uma string no formato 'D HH:MM:SS.fração' . (Note que o MySQL não armazena ainda frações para a coluna time.) Pode-se também utilizar uma das seguintes sintaxes ``relaxadas'':

Também não entendi porque ele aceita mas não armazena :wacko:

Coloca a hora no TIME (ou DATETIME) mesmo e os milésimos em outro campo.

Link para o comentário
Compartilhar em outros sites

  • 0

Não posso botar os milésimos em outro campo porque tenho que fazer subtrações e somas de outros campos depois. É mais fácil eu transformar tudo para milésimos num campo int mesmo.

Só queria saber mesmo se tinha um campo que aceitasse milésimos pra eu não precisar fazer todo este cálculo.

Acabei fazendo esta função:

  <?
  function transforma($milesimos) {

      // cria a string de saída
      $tempo = "";

      // acha as horas e intval retorna o valor int da variável
      $hora = intval($milesimos / 3600000);

      // se hora for maior que zero concatena na variável tempo
      if ($hora > 0) {
      $tempo .= str_pad($hora, 2, "0", STR_PAD_LEFT). 'h';
      }

      // acha os minutos
      $minutos = intval(($milesimos / 60000) % 60);

      // se minutos for maior que zero concatena na variável tempo
      if ($minutos > 0) {
      $tempo .= str_pad($minutos, 2, "0", STR_PAD_LEFT). 'm';
      }

      // acha os segundos
      $segundos = intval(($milesimos / 1000) % 60);

      // se segundos for maior que zero concatena na variável tempo
      if ($segundos > 0) {
      $tempo .= str_pad($segundos, 2, "0", STR_PAD_LEFT) . 's';
      }
      
      // adiciona o resto de milésimos
      $mil = intval($milesimos % 1000);

      // se milesimos for maior que zero concatena na variável tempo
      if ($mil > 0) {
      $tempo .= str_pad($mil, 3, "0", STR_PAD_LEFT);
      }
      
      // saida formatada!
      return $tempo;

    }
  ?>
  
  <?
    // chama a função passando o valor em milésimos
    echo transforma(4270107);
  ?>

EX:

Botando 4270107 milésimos vai dar 01h11m10s107, pra converter isso ao contrário é só fazer:

$milésimos = (1*3600000)+(11*60000)+(10*1000)+107

Isso vai servir pra eu fazer um sistema de tomada de tempo numa corrida, sacaram? ;)

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...