Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Patrícia Nogueira

[Resolvido] Formatando a Hora

Recommended Posts

Boa tarde pessoal, tudo bem?

 

Tenho valores de horas que estão sem os dois pontos (:), ex: 30, 130, 1300... Tenho que deixar essas horas no formato de 24h, ex: 00:30, 01:30, 13:00... Só que quando coloco a string "00:" ou "0" o PHP não reconhece... Alguém pode me ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual é o DataType que está usando para salvar este horario ?

 

O certo é usar o Type= time

 

ele aceita os : ai só fazer a formatação certa...

 

No seu campo coloque exato tipo <input type='text' name='horario' value='15:35'>

 

ele irá salvar de boa !!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, você terá que fazer uma gambiarra, deixando a string com 4 caracteres (http://br.php.net/manual/pt_BR/function.str-pad.php) e depois colocando uma vírgula no meio. Mas tenha ciência que isto não será uma hora, e sim uma string.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Patrícia, seja bem vinda!

 

Seu problema é bem simples... você pode fazer o seguite:

 

<?php
 $hora = $_POST['hora']; // Recebe a hora inserida pelo usuario
 $hora = str_replace(':', '', $hora); // Tira qualquer : de $hora
 $hora = str_pad($hora, 4, "0", STR_PAD_LEFT); // Coloca 0s a esquerda de $hora até ela ficar com 4 caracteres
 $partes = str_split($hora, 2); // Divide $hora a cada 2 caracteres (gerando duas partes)
 $hora_final = join(':', $partes); // Junta as partes colocando um ':' entre elas
 echo "A hora inserida é: ".$hora_final;
 ?>
É um pouco grande, mas resolveria... e você poderia inserir 30, 130, 1300 que irá funcionar...

 

Mas se você inserir, por exemplo, '6500' ele vai retornar '65:00', então ele não tá validando a hora, ele só formata ela pra uma exibição válida...

 

Abraços

 

--

 

Documentação:

http://br2.php.net/manual/pt_BR/function.str-pad.php

http://br2.php.net/manual/pt_BR/function.str-split.php

http://br2.php.net/manual/pt_BR/function.str-replace.php

http://br2.php.net/manual/pt_BR/function.join.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

<?
$var = "2100000";

$var = strlen($var)>=4 ? $var = substr($var,0,4) : strlen($var)<4 ? str_pad($var,4,"0", STR_PAD_LEFT) : $var;

echo date("H:i",strtotime($var));
?>

Edit: o TiuTalk postou mais rápido. rsrs; mas deixo o meu exemplo.

 

• pode ser inserida qualquer tamanho de string.. ele formata da seguinte maneira.

SE: $var = "21"; será adicionado '00' no ínicio // resultado 0021

Se: $var = "210000"; será removido os 0 do Fim // Resultado 2100

 

Se: $var For maior de 2359; ele retornará o horário padrão do seu servidor. EX o meu é 2100 então o retorno será 2100

 

OBS: o Fabyo postou uma vez como converter de forma correta Strings para Time; mas eu esqueci como faz.

 

rsrs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Patrícia, seja bem vinda!

 

Seu problema é bem simples... você pode fazer o seguite:

 

<?php
$hora = $_POST['hora']; // Recebe a hora inserida pelo usuario
$hora = str_replace(':', '', $hora); // Tira qualquer : de $hora
$hora = str_pad($hora, 4, "0", STR_PAD_LEFT); // Coloca 0s a esquerda de $hora até ela ficar com 4 caracteres
$partes = str_split($hora, 2); // Divide $hora a cada 2 caracteres (gerando duas partes)
$hora_final = join(':', $partes); // Junta as partes colocando um ':' entre elas
echo "A hora inserida é: ".$hora_final;
?>
É um pouco grande, mas resolveria... e você poderia inserir 30, 130, 1300 que irá funcionar...

 

Mas se você inserir, por exemplo, '6500' ele vai retornar '65:00', então ele não tá validando a hora, ele só formata ela pra uma exibição válida...

 

Abraços

 

--

 

Documentação:

http://br2.php.net/manual/pt_BR/function.str-pad.php

http://br2.php.net/manual/pt_BR/function.str-split.php

http://br2.php.net/manual/pt_BR/function.str-replace.php

http://br2.php.net/manual/pt_BR/function.join.php

 

Oiiieee!!!!

 

Nossa muito obrigada!! Seu código funcionou perfeitamente!! http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

 

Precisando de qualquer coisa é só falar! ;)

 

Abs,

Patrícia.

Compartilhar este post


Link para o post
Compartilhar em outros sites

<?
$var = "2100000";

$var = strlen($var)>=4 ? $var = substr($var,0,4) : strlen($var)<4 ? str_pad($var,4,"0", STR_PAD_LEFT) : $var;

echo date("H:i",strtotime($var));
?>

Edit: o TiuTalk postou mais rápido. rsrs; mas deixo o meu exemplo.

 

• pode ser inserida qualquer tamanho de string.. ele formata da seguinte maneira.

SE: $var = "21"; será adicionado '00' no ínicio // resultado 0021

Se: $var = "210000"; será removido os 0 do Fim // Resultado 2100

 

Se: $var For maior de 2359; ele retornará o horário padrão do seu servidor. EX o meu é 2100 então o retorno será 2100

 

OBS: o Fabyo postou uma vez como converter de forma correta Strings para Time; mas eu esqueci como faz.

 

rsrs

 

Oi Renato!!

 

Muito obrigada pela ajuda!! Valeu!! http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

 

Por enquanto não será necessário transformar essa string hora em time, porque estou apenas transferindo para um arquivo de texto.

 

Precisando de qualquer ajuda é só falar.

 

Abs,

Patrícia.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.