pexoia Posted November 21, 2015 at 04:31 PM Report Share #589940 Posted November 21, 2015 at 04:31 PM (edited) Boas pessoal 🙂 É o seguinte, vou já passar ao assunto que me trouxe aqui no qual tenho uma duvida 😛 Eu estou a desenvolver um site de um jogo, onde pronto cada jogador pode ver quando tempo online é que já passou no jogo. E eu tenho apresentado desta maneira O que eu queria, era digamos por isto a mostrar da maneira correta, ou seja o que eu quero dizer com isto ? É o seguinte, queria que isso mostrasse tipo : 2 meses 5 dias, 23 horas, 40 minutos, em vez 5683 minutos de jogo :c Será que alguém pode dar aà uma mãozinha? 😄 Ficaria extremamente agradecido 😛 Edited November 22, 2015 at 12:35 PM by pexoia Link to comment Share on other sites More sharing options...
psiico Posted November 21, 2015 at 05:57 PM Report Share #589942 Posted November 21, 2015 at 05:57 PM (edited) Penso que com a função date() de php consegues fazer isso. é só escolher o formato da lista e passar uma unix timestamp desse tempo, ou então podes criar uma função que converte minutos para horas, dias, semanas. Edited November 21, 2015 at 06:06 PM by psiico Psiico // Portfolio Link to comment Share on other sites More sharing options...
xintect Posted November 22, 2015 at 12:20 AM Report Share #589959 Posted November 22, 2015 at 12:20 AM isso e timestamp ou k? Link to comment Share on other sites More sharing options...
Bernardo Vieira Posted November 22, 2015 at 12:20 AM Report Share #589960 Posted November 22, 2015 at 12:20 AM A minha ideia inicial: Como o psiico disse, acho que a funcao date() é capaz de dar, mas é melhor multiplicar os minutos por 60, para ficar em segundos (porque o timestamp é ém segundos) O que eu me lembrei enquanto escrevia: Nao vai dar porque ao fim de 30 dias a funcao date() começa a contar no dia 1 outra vez ... O melhor será uma funcao para isso! Nada de especial exemplo 3270 minutos -> 2dias 6horas 30minutos (arredonda sempre por defeito) dias = (minuto/60/24); //2dias horas = (minutos/60)-(24*dias); //6horas minutos = minutos-(24*dias*60)-(horas*60); //30minutos é obvio que há gormas melhores de fazer isto, mas surgiu assim de repente Link to comment Share on other sites More sharing options...
pexoia Posted November 23, 2015 at 04:19 PM Author Report Share #590013 Posted November 23, 2015 at 04:19 PM (edited) Boas tardes mais uma vez 🙂 Bem já fiz algum progresso quanto ao objetivo que desejo alcançar 😛 Já aparece assim : Mas agora estou com um ligeiro probleminha, que é o seguinte: Eu queria que quando batesse nas 24h e transformasse logo para dia. O que quero dizer com isto ? Queria que ele em vez de 25h e 10 minutos, ficasse 1 dia, 1h e 10 minutos 🙂 Alguem me pode ajudar só a emendar este pormenor? Juro que não chateio mais ninguem ahah <3 Segue em baixo o meu código function tempoCorreto($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; 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 detalhe pra colocar um zero no final if (strlen($m) < 2) $m = $m . 0; return sprintf('%02d horas, %02d', $h, $m); } Edited November 23, 2015 at 04:24 PM by pexoia Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted November 23, 2015 at 05:17 PM Report Share #590019 Posted November 23, 2015 at 05:17 PM e o pessoal sempre a complicar ... <?php function tempoCorreto($mins) { $dias = floor($mins / (24*60)); $mins = $mins % (24*60); $horas = floor($mins / 60); $mins = $mins % 60; $output = ""; if ($dias) $output .= " $dias dias"; if ($horas) $output .= " $horas horas"; $output .= " $mins minutos"; return $output; } 1 Report IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
pexoia Posted November 23, 2015 at 06:46 PM Author Report Share #590025 Posted November 23, 2015 at 06:46 PM (edited) Sim HappyHippyHippo eu sei que o código dava para otimizar mais xD Mas pronto, quando uma pessoa ainda está a aprender vamos sempre pela maneira mais longa e mais complicado por vezes u_u Tenho muita consideração por ti e pelo teu conhecimento, és um excelente programador pelo que vejo, não só pela GIGANTEEEE ajuda que me deste, mas tambem pelo que vejo a ajudares os outros 🙂 Muitissimoo obrigado sincero mesmo <333 Cumprimentos Edited November 23, 2015 at 06:47 PM by pexoia Link to comment Share on other sites More sharing options...
psiico Posted December 2, 2015 at 05:24 PM Report Share #590302 Posted December 2, 2015 at 05:24 PM Nao vai dar porque ao fim de 30 dias a funcao date() começa a contar no dia 1 outra vez ... Não propriamente, se ele estiver a trabalhar com timestamps vai sempre funcionar já que, a timestamp é única para cada segundo desde 1/1/1970. Psiico // Portfolio Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted December 2, 2015 at 05:49 PM Report Share #590304 Posted December 2, 2015 at 05:49 PM Não propriamente, se ele estiver a trabalhar com timestamps vai sempre funcionar já que, a timestamp é única para cada segundo desde 1/1/1970. podes então apresentar uma solução usando a função date ? IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now