Ir para conteúdo

POWERED BY:

Arquivado

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

horacio2009

conversão de tempo

Recommended Posts

boa tarde, pessoal, tudo bem com vocês?

seguinte, tenho um determinado valor:

105.00000
e quero converter isso em hora, por exemplo, 1 hora e 20 (1.20) algo assim...

como eu posso fazer?

obrigado a todos!!!

Horácio

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pelo seu exemplo, ficou mais claro (em meio a confusão) seriam segundos, então com date() você faz:

 

print date( 'd/m/Y - H:i:s', 105.00000 ); // 31/12/1969 - 21:01:45

Se não é isso explica melhor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom...vamos lá...

esse valor 105.0000 retorna desse jeito porque coloquei num campo decimal 10,5, mas na verdade o valor é 105, o que eu quero é saber a quantas horas equivale 105?

por exemplo, 120 sei que equivale a 2 horas, 105 , equivale a 1.45, mas eu quero saber, como chegar a esse resultado, de 1.45 horas...

é isso!! :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

<?php
	function m2h($mins) {
		// Se os minutos estiverem negativos
		if ($mins < 0)
			$min = abs($mins); 
		else
			$min = $mins; 
 
		// Arredonda a hora
		$h = floor($min / 60); 
		$m = ($min - ($h * 60)) / 100; 
		$horas = $h + $m; 
 
		// Matemática da quinta série
		// Detalhe: Aqui também pode se usar o abs()
		if ($mins < 0)
			$horas *= -1; 
 
		// Separa a hora dos minutos
		$sep = explode('.', $horas); 
		$h = $sep[0]; 
		if (empty($sep[1]))
			$sep[1] = 00; 
 
		$m = $sep[1]; 
 
		// Aqui um pequeno artifício pra colocar um zero no final
		if (strlen($m) < 2)
			$m = $m . 0; 
 
		return sprintf('%02d:%02d', $h, $m); 
	} 
 
	print m2h(135);
?>

 

Tenta isso aí!

Compartilhar este post


Link para o post
Compartilhar em outros sites

1 hora = 60 minutos

 

logo:

105 - 60 = 45

 

qr dizer que temos 1 hora inteira, e 45 minutos.

 

conta de divisão. Conseguiu pegar o raciocínio ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom, vamos por parte...

Falcao, testei a função que você me ´passou...realmente muito boa, mas como faço para que exiba os minutos?pois a mesma só está exibindo as horas...ou seja, num total de 359 minutos, ele me informa 5 horas, mas quando vou olhar aquele calculo que eu tinha feito anteriormente ele me diz que tem um total de 5,9833333333333 horas...claro, o calculo não tá correto, mas tem quase 6 horas(360 minutos) então não deveria mostrar 5horas e 59 minutos?

para mim ele exibe apenas "05:00" como eu coloco os minutos aqui???

 

William, sua lógica tá certinha mas como faria para aplica-la em outros valores? por exemplo, nos mesmos 359 minutos...como ficaria ???

Compartilhar este post


Link para o post
Compartilhar em outros sites

como faria para aplica-la em outros valores? por exemplo, nos mesmos 359 minutos...como ficaria ???

 

Poxa amigo, isso aprende-se no ensino fundamental !!! :angry:

 

<?php
$total = 359;
$horas = (int) ( $total / 60 );
$minutos = $total - ( $horas * 60 );

var_dump( $horas , $minutos );

 

Saída:

int(5)
int(59)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Lá vou eu perguntar sobre performance com instruções básicas heheheeheh...

 

O cálculo do resto não é mais rápido?

 

$h = $t / 60;
$m = $t % 60;

Compartilhar este post


Link para o post
Compartilhar em outros sites

O cálculo do resto não é mais rápido?

Sim seria (diferença pequena), mas eu ilustrei daquela forma para mostrar o quão simples é a solução e que, na verdade, não se trata de um problema com PHP (ou qualquer linguagem) e sim com matemática simples.

 

Você poderia utilizar a funções de data também para conseguir o mesmo resultado:

<?php
date_default_timezone_set( 'UTC' );

var_dump( date( 'H:i' , 359 * 60 ) );

 

Saída:

string(5) "05:59"

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.