Jump to content


Photo

Problemas Em Função Hora


  • Faça o login para participar
10 replies to this topic

#1 Marschall

Marschall

    Novato no fórum

  • Usuários
  • 15 posts
  • Sexo:Não informado

Posted 25/08/2009, 08:55

Bom dia,

bom pessoal, tenho um problema com um dado do banco que vem em decimal, mas deve ser impresso na tela em formato de hora.
por exemplo, pego do banco o numero 10.5 ele deve ser impresso 10:30, tentei uma função aqui mas da uns erros, deveria aparecer somente 2 campos na parte dos minutos. mas está aparecendo o resultado conforme o resultado da divisão. vejam se podem me ajudar;


segue função:

function horaDB($teste)
	{
		if(!empty($teste))
		{
			$teste = explode('.',$teste);
			return $teste[0].':'.$teste[1] * 60 / 10;
		}	
	}

fico no aguardo, abraços!

#2 DeeK

DeeK

    Normal

  • Usuários
  • 63 posts
  • Sexo:Masculino

Posted 25/08/2009, 09:06

Pesquise a função

number_format()

É simples.

#3 Marschall

Marschall

    Novato no fórum

  • Usuários
  • 15 posts
  • Sexo:Não informado

Posted 25/08/2009, 09:23

ta, com a função number_format eu formato o numero. mas tem um adendo que por exemplo
10.5 é igual a 10:30
5.25 é igual a 5:15

então eu preciso fazer o numero depois do ponto / 60
pra ter esse numero decimal impresso em hora..

podem me ajudar?

#4 DeeK

DeeK

    Normal

  • Usuários
  • 63 posts
  • Sexo:Masculino

Posted 25/08/2009, 10:30

Olha

você tem que fazer esse calculo.


1 hora = 60 min
1 minuto = 60 seg

Exemplo:

2,70 = 2 hora + 70/100 da hora

Achar os minutos:
minutos = 70 x 60 / 100 = 42 minutos

A hora é:
2 hora 42 minutos: 2:42

eu pesquisei e achei isso
vou tentar por em uma função
Boa

#5 Marschall

Marschall

    Novato no fórum

  • Usuários
  • 15 posts
  • Sexo:Não informado

Posted 25/08/2009, 10:39

sim, acho que estamos conseguindo chegar no que quero.. hehe

o problema está em montar uma função
que pegue uma variavel

exemplo: $tempo_disponivel que contém 7,15

ou seja: 7 + (0,15 * 60) = 7 + 9

e me mostre na tela 7:09

entende?

obrigado cara!

Edição feita por: Marschall, 25/08/2009, 10:41.


#6 DeeK

DeeK

    Normal

  • Usuários
  • 63 posts
  • Sexo:Masculino

Posted 25/08/2009, 11:18

Ai véio
Pensei que tinha montado
Mas esqueci de uns detalhes.


Viuu
Olha:

$hora = '10,70';
if(strlen($hora) == 5)
{
		$minuto = substr($hora,3,strlen($hora)-0);
		$hora = substr($hora,0,strlen($hora)-2);
		
		$x_minuto = ($minuto * 60) / 100;
		$hora_formatada = $hora.":".$x_minuto;
		$hora_formatada = str_replace(',','',$hora_formatada);
		if(strlen($hora_formatada) == 6)
		{
				$hora_formatada = $hora_formatada."0";
		}
		elseif(strlen($hora_formatada) == 4)
		{
				$hora_formatada = str_replace(':',':0',$hora_formatada);		
		}
		echo $hora_formatada;
		
}
elseif(strlen($hora) == 4)
{
		$minuto = substr($hora,2,strlen($hora)-0);
		$hora = substr($hora,0,strlen($hora)-3);
		
		$x_minuto = ($minuto * 60) / 100;
		
		$hora_formatada = $hora.":".$x_minuto;
		$hora_formatada = str_replace(',','',$hora_formatada);
		if(strlen($hora_formatada) == 5)
		{
				$hora_formatada = $hora_formatada."0";
		}
		echo $hora_formatada;
}


Editei a funcao
Tem algumas coisas que tem que ver.
Por exemplo.
Se no banco ta '1,5' ou '10,5' tem que tratar
Nessa função ae eu tratei numeros assim '10,25' e '10,15'
pq no '10,15' seria 10:09 minutos, dae sem tratamento ele mostra '10:9'

eh chato de fazer

Edição feita por: DeeK, 25/08/2009, 11:39.


#7 Marschall

Marschall

    Novato no fórum

  • Usuários
  • 15 posts
  • Sexo:Não informado

Posted 25/08/2009, 11:38

é cara, realmente da uns pau.

a minha também da esses mesmos paus..
não sei cara, tinha que dar um jeito de aperfeiçoar isso.. não tenho como explicar pro cliente que ta dando pau hehe!

abraço

#8 Paulo Freitas

Paulo Freitas

    ××××××× LRU #456504 ××××××× ××××××× LRM #364686 ×××××××

  • Ex-Admins
  • 5612 posts
  • Sexo:Masculino
  • Localidade:Campinas - SP

Posted 25/08/2009, 11:51

Aqui vai meus R$0,02:

<?php

$time = 10.15; // horário do banco de dados
$h = intval($time);
$m = ($time - $h) * 60;

printf('%02d:%02d', $h, $m);

?>
Tudo isso. :P

[]’sAté mais

#9 DeeK

DeeK

    Normal

  • Usuários
  • 63 posts
  • Sexo:Masculino

Posted 25/08/2009, 11:57

O que faz o IntVal() ?

#10 Paulo Freitas

Paulo Freitas

    ××××××× LRU #456504 ××××××× ××××××× LRM #364686 ×××××××

  • Ex-Admins
  • 5612 posts
  • Sexo:Masculino
  • Localidade:Campinas - SP

Posted 25/08/2009, 12:03

O que faz o IntVal() ?

Obtém o valor inteiro de uma variável. :)

Consulte sempre o manual, é nosso melhor amigo, pau pra toda obra: http://br.php.net/intval :D

[]’sAté mais

#11 Marschall

Marschall

    Novato no fórum

  • Usuários
  • 15 posts
  • Sexo:Não informado

Posted 25/08/2009, 12:55

isso mesmo cara!
obrigado!!!!
foi de grande valia




abraços!!!




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq