xTrovaox 0 Denunciar post Postado Junho 25, 2011 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) Compartilhar este post Link para o post Compartilhar em outros sites
Matheus Tavares 167 Denunciar post Postado Junho 25, 2011 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 Compartilhar este post Link para o post Compartilhar em outros sites
Kakashi_Hatake 267 Denunciar post Postado Junho 25, 2011 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) ?> Compartilhar este post Link para o post Compartilhar em outros sites
xTrovaox 0 Denunciar post Postado Junho 25, 2011 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?? Compartilhar este post Link para o post Compartilhar em outros sites
klonder 14 Denunciar post Postado Junho 25, 2011 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. Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Junho 25, 2011 Estes valores vem do banco de dados? Se sim, qual o banco? Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
xTrovaox 0 Denunciar post Postado Junho 26, 2011 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?? Compartilhar este post Link para o post Compartilhar em outros sites
Kakashi_Hatake 267 Denunciar post Postado Junho 26, 2011 No SQL mesmo SELECT IF( NOW( ) > '2011-06-18 03:07:22', TRUE, FALSE ); Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Junho 26, 2011 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 Compartilhar este post Link para o post Compartilhar em outros sites
xTrovaox 0 Denunciar post Postado Junho 26, 2011 isso seria direto no mysql certo?? será que é possivel fazer isso em php? Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Junho 26, 2011 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 Compartilhar este post Link para o post Compartilhar em outros sites
xTrovaox 0 Denunciar post Postado Junho 27, 2011 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. Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Junho 27, 2011 Então, basta você fazer o SELECT .. e verificar os resultados Compartilhar este post Link para o post Compartilhar em outros sites
xTrovaox 0 Denunciar post Postado Junho 27, 2011 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? Compartilhar este post Link para o post Compartilhar em outros sites
xTrovaox 0 Denunciar post Postado Junho 27, 2011 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. Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Junho 27, 2011 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 Compartilhar este post Link para o post Compartilhar em outros sites