Jump to content

Recommended Posts

Posted
<?php
$a = new DateTime(' 00:00:00');
$b = new DateTime(' 18:00:00');
$interval1 = $a->diff($b);
//echo "interval 1: ", $interval1->format("%H:%I"), "\n";

$c = new DateTime('00:00:00');
$d = new DateTime('18:00:00');
$interval2 = $c->diff($d);
//echo "interval 2: ", $interval2->format("%H:%I"), "\n";

$e = new DateTime('00:00');
$f = clone $e;
$e->add($interval1);
$e->add($interval2);
echo " ", $f->diff($e)->format("%D %H:%I"), " \n";
?>

Boas,

Num outro Post precisei de ajuda para criar um banco de horas. Mas consegui resolver o problema, o meu novo problema é que preciso de ir buscar um valor e não calcula-lo. Por exemplo:

Tenho 18 horas guardados na base de dados,( calculados anteriormente com o código para calcular a difrença,que com o output guardei na base de dados) agora precisava de adicionar mais 5 horas.

Usei esta opção,

[/size]
$interval1="18:00";
$teste=$interval1->format("%H:%I");

mas não funcionou. Alguma ajuda ???

Posted (edited)

echo date('H:i:s', strtotime("+5 hours", strtotime('18:00')));

Tem de vir do código para calcular a diferença entre 2 datas. Eu vou transformar isto em funções,e será tudo com valores que terei de ter já apanhado da pagina principal. Ou seja, tem de funcionar com estas duas funções [

size=4]

[/size]
function CalculaTempo($a,$b){
$interval1 = $a->diff($b);
}

function AdicionaTempo($interval1,$valorBaseDados){
$e = new DateTime('00:00');
$f = clone $e;
$e->add($interval1);
$e->add($valorBaseDados);
echo " ", $f->diff($e)->format("%D %H:%I"), " \n";
}

Sei que estas duas funções não funcionam, é só um exemplo.

Edited by odnav
Posted

Sim eu sei, foi só mesmo um exemplo, para mostrar como vou ter de funcionar, a minha única duvida aqui, é como vou buscar um valor na BD com o formato format("%D %H:%I") e conseguir soma-lo na segunda função

Posted

Estás com dúvidas a devolver o valor da base de dados?

Tendo o valor da base de dados,e soma-lo.O meu problema é meter o valor que trago da BD no formato que uso para somar.
Posted

(...) é como vou buscar um valor na BD com o formato format("%D %H:%I")

Estás com dúvidas a devolver o valor da base de dados?

(...) O meu problema é meter o valor que trago da BD no formato que uso para somar.

Qual é o valor que trazes da BD?

Apesar de o introduzir assim é isto que quero guardar na BD

Decide-te rapaz. Sabes que isto de estar atrás de um computador a tentar adivinhar o que outra pessoa quer pela via escrita não é fácil a menos que essa pessoa escreva coerentemente.

  1. Não interessa o formato da data que estás a gravar na base de dados, podes converter com a função strtotime() como te disse.
  2. Afinal não consegues ir buscar o valor à base de dados ou consegues?
  3. No exemplo que te dei, podes colocar a data que vem da base de dados no 2º parâmetro da função.

echo date('H:i:s', strtotime("+5 hours", strtotime($variavel_da_basedados)));
Posted

O que eu tenho é um valor na base de dados com o seguinte formato HH:MM, e agora usando a segunda função

[/size]
function AdicionaTempo($interval1,$valorBaseDados){
$e = new DateTime('00:00');
$f = clone $e;
$e->add($interval1);
$e->add($valorBaseDados);
echo " ", $f->diff($e)->format("%D %H:%I"), " \n";
}

quero adiciona-lo a um novo valor (que vem da primeira função) que irá substituir o valor na base de dados ficando sempre com aquele formato HH:MM.

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
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.