Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal estou precisando de uma ajuda aqui.
Como faço para calcular a diferente entre 2 datas do tipo DateTime??
Exemplo:
$DataFuturo = "2011-03-02 20:30:15";
$DataAtual = "2011-01-02 20:30:15"; (ou "2011-03-02 20:10:15")
Ele teria que me retonar a $DataFuturo como maior, pois o mês da $DataAtual é menor que o mês da $DataFuturo.
Ou me voltar a $DataFuturo como maior, pois mesmo a data sendo a mesma, a $DataAtual tem sua hora menor que a da $DataFuturo. (isso foi na segundo valor da $DataAtual)
Use a classe DateTime, veja:
<?php
$DataFuturo = "2011-03-02 20:30:15";
$DataAtual = "2011-03-02 20:10:15";
$date_time = new DateTime( $DataAtual );
$diff = $date_time->diff( new DateTime( $DataFuturo ) );
echo $diff->format( '%y year(s), %m month(s), %d day(s), %H hour(s), %i minute(s) and %s second(s)' );
// 0 year(s), 0 month(s), 0 day(s), 00 hour(s), 20 minute(s) and 0 second(s)
?>
Carlos eu tentei usar essa função, mas aqui não da certo, pois a versão do php que uso não suporta.
Será que não tem como fazer esse calculo e uma forma que funcione??
Não sei se seria o mais correto, mas eu sempre (sempre = SEMPRE) trabalho com datas no formato TimeStamp, principalmente nas consultas ao banco de dados. Isso facilita enormemente qualquer conta entre elas.
Estes valores vem do banco de dados? Se sim, qual o banco?
Carlos Eduardo
Sim, na conta ele vai ter que puxar uma data (datetime) do banco de dados, e ver qual é maior, se é a de agora ou a do banco de dados.
Banco de dados: MySql
eae gente será que tem alguma solução??? é possivel fazer esse calculo entre data e hora em um só campo datetime??
No SQL mesmo
SELECT IF( NOW( ) > '2011-06-18 03:07:22', TRUE, FALSE );
Pelo que entendi, você quer usar a data mais longa entre elas, certo? Se for isto, você pode usar direto no SELECT (quase como o Carlos Coelho sugeriu).
SELECT IF(data_atual > data_futuro, data_atual, data_futuro) AS data_maior FROM tabela
Onde data_futuro e data_atual são os campos da tabela que você quer comparar. Neste caso, data_maior será o campo que tiver o maior valor entre eles e que será retornado da consulta.
Carlos Eduardo
isso seria direto no mysql certo??
será que é possivel fazer isso em php?
Claro, você faz o fetch na data que você quer .. então faz o mesmo tipo de comparação.
Mais eu não vejo o porque, sendo que na SQL mesmo você soluciona, então já faz um fetch só com o resultado final
Tipo vai funcionar dessa forma:
O usuario entra na pagina, no momento que ele entrou ja envia um INSERT pro banco de dados, ele envia a data atual + 7 horas ($DataLiberar).
Quando o usuario entrar novamente naquela pagina, ela verifica se a data(hora) atual é maior que a $DataLiberar, se for maior quer dizer que ja passou as 7 horas, então o cara pode entrar na pagina, caso a data atual for menor que a $DataLiberar, quer dizer que ainda não se passaram as 7 horas, então ele não pode acessar a pagina ainda.
Mas é claro vao ser varios usuarios, na verificação ele vai verificar onde o ID do usuario logado é igual ao do IDusuario na tabela onde é inserido a $DataLiberar.
Mas ja fiz tudo, só falta fazer este calculo de datetime, descobrir se é maior ou não.
Então, basta você fazer o SELECT .. e verificar os resultados
Então o problema é que sou leigo em php e ainda estou estudando, sei fazer apenas algumas coisas.
Sobre fazer esse esquema utilizar direto no sql, eu não sei como fazer, sei que tem como digitar comando direto no sql, mais como fazer esse? ou é so copiar o camando e colocar no sql e executar?? como ele vai me retornar ??
será que tem como me explicar fazendo um grande favor?
Pessoal achei um código que parece que resolveu meu problema, vejam:
<?php
$date1 = new DateTime('2009-10-10 20:09:00');
$date2 = new DateTime('2009-11-10 20:11:00');
if ($date1 > $date2) {
echo"Data 1 é maior que Data 2";
} else {
echo"Data 2 é maior que Data 1";
}
?>
E isso mesmo ne?? testei aqui e funcionou certinho.
Obrigado pela ajuda de todos.
Esta solução foi dada 3 dias atrás, mas você disse que não servia porque você disse que o seu host não suporte DateTime.
Ainda acho que a melhor opção é fazer direto pelo SQL. Pelo que entendi, você quer fazer um validação para não permitir que ele entre. Então, o ideal é fazer isto na mesma consulta do login.
Poste o código onde você faz a autenticação do usuário, para verificar se o usuário e a senha estão corretos.
Carlos Eduardo
Sem pesquisar, na nossa segunda página de php do fórum, eis a resposta:
:seta: http://forum.imasters.com.br/topic/436089-como-somar-data-e-hora/
Pesquisando:
:seta: http://forum.imasters.com.br/index.php?app=core&module=search&do=search&fromMainBar=1