_Kurimatzu_ Postado Dezembro 27, 2015 Denunciar Compartilhar Postado Dezembro 27, 2015 Queria formatar o tempo +- assim. // 2 minutos // Tempo = 120; Aí ficaria assim 2min 0sg 1min 59sg Se o tempo for em horas ficaria assim: 10h 15min 10seg Em dias: 1 dia , 1 hora , 3 segundos. Alguém pode fazer esses métodos? ;-; Link para o comentário Compartilhar em outros sites More sharing options...
leonardosc Postado Dezembro 27, 2015 Denunciar Compartilhar Postado Dezembro 27, 2015 (editado) Ai, eu tinha feito pro Yukki private static String format( int seconds ) { int hours = 0, minutes = 0; while ( (seconds / 3600) > 0 ) { seconds -= 3600; hours++; } while ( (seconds / 60) > 0 ) { seconds -= 60; minutes++; } StringBuilder ret = new StringBuilder(); if ( hours > 0 ) { ret.append( hours ).append( " " ).append( hours > 1 ? "horas" : "hora" ); } if ( minutes > 0 ) { if ( ret.length() > 0 ) ret.append( ", " ); ret.append( minutes ).append( " " ).append( minutes > 1 ? "minutos" : "minuto" ); } if ( seconds > 0 ) { if ( ret.length() > 0 ) ret.append( ", " ); ret.append( seconds ).append( " " ).append( seconds > 1 ? "segundos" : "segundo"); } return ret.toString(); }; public static void main(String[] args) { System.out.println(FormatSeconds(60)); System.out.println(FormatSeconds(62340)); System.out.println(FormatSeconds(3660)); System.out.println(FormatSeconds(10)); } Output: 1 minuto 17 horas, 19 minutos 1 hora, 1 minuto 10 segundos Em c# a titulo de curiosidade private static readonly Func<uint, string> FormatSeconds = (seconds) => { int hours = 0, minutes = 0; while ( (seconds / 3600) > 0 ) { seconds -= 3600; hours++; } while ( (seconds / 60) > 0 ) { seconds -= 60; minutes++; } var ret = new StringBuilder(); if ( hours > 0 ) { ret.Append( hours ).Append( " " ).Append( hours > 1 ? Lang.HOURS.GetMessage() : Lang.HOUR.GetMessage() ); } if ( minutes > 0 ) { if ( ret.Length > 0 ) ret.Append( ", " ); ret.Append( minutes ).Append( " " ).Append( minutes > 1 ? Lang.MINUTES.GetMessage() : Lang.MINUTE.GetMessage() ); } if ( seconds > 0 ) { if ( ret.Length > 0 ) ret.Append( ", " ); ret.Append( seconds ).Append( " " ).Append( seconds > 1 ? Lang.SECONDS.GetMessage() : Lang.SECOND.GetMessage() ); } return ret.ToString(); }; Esse segundo é em c#, eu tinha feito em c# pq eu tava precisando eu eu passei pra java e tals, eu só copiei da minha MP e colei aqui mesmo Editado Dezembro 27, 2015 por leonardosc Link para o comentário Compartilhar em outros sites More sharing options...
Waysho Postado Dezembro 27, 2015 Denunciar Compartilhar Postado Dezembro 27, 2015 Seria bom explicar melhor... Link para o comentário Compartilhar em outros sites More sharing options...
_Kurimatzu_ Postado Dezembro 27, 2015 Autor Denunciar Compartilhar Postado Dezembro 27, 2015 Seria bom explicar melhor... Formatar o tempo , tipo assim Eu tenho 120 segundos aí ficaria assim: 2min 0sg 1min 59sg Se eu tenho horas ficaria assim: 1hora 59min 2sg Se eu tenho dias ficaria assim: 1 dia 5min 3seg. Entendeu? Link para o comentário Compartilhar em outros sites More sharing options...
Waysho Postado Dezembro 27, 2015 Denunciar Compartilhar Postado Dezembro 27, 2015 Sim sim, aconselho procurar assistir vídeos gringos de hashmap e fazer cooldown com tempo restante e depois formatar. Depois te indico um. Link para o comentário Compartilhar em outros sites More sharing options...
_Kurimatzu_ Postado Dezembro 27, 2015 Autor Denunciar Compartilhar Postado Dezembro 27, 2015 Ai, eu tinha feito pro Yukki private static String format( int seconds ) { int hours = 0, minutes = 0; while ( (seconds / 3600) > 0 ) { seconds -= 3600; hours++; } while ( (seconds / 60) > 0 ) { seconds -= 60; minutes++; } StringBuilder ret = new StringBuilder(); if ( hours > 0 ) { ret.append( hours ).append( " " ).append( hours > 1 ? "horas" : "hora" ); } if ( minutes > 0 ) { if ( ret.length() > 0 ) ret.append( ", " ); ret.append( minutes ).append( " " ).append( minutes > 1 ? "minutos" : "minuto" ); } if ( seconds > 0 ) { if ( ret.length() > 0 ) ret.append( ", " ); ret.append( seconds ).append( " " ).append( seconds > 1 ? "segundos" : "segundo"); } return ret.toString(); }; public static void main(String[] args) { System.out.println(FormatSeconds(60)); System.out.println(FormatSeconds(62340)); System.out.println(FormatSeconds(3660)); System.out.println(FormatSeconds(10)); } Output: 1 minuto 17 horas, 19 minutos 1 hora, 1 minuto 10 segundos Em c# a titulo de curiosidade private static readonly Func<uint, string> FormatSeconds = (seconds) => { int hours = 0, minutes = 0; while ( (seconds / 3600) > 0 ) { seconds -= 3600; hours++; } while ( (seconds / 60) > 0 ) { seconds -= 60; minutes++; } var ret = new StringBuilder(); if ( hours > 0 ) { ret.Append( hours ).Append( " " ).Append( hours > 1 ? Lang.HOURS.GetMessage() : Lang.HOUR.GetMessage() ); } if ( minutes > 0 ) { if ( ret.Length > 0 ) ret.Append( ", " ); ret.Append( minutes ).Append( " " ).Append( minutes > 1 ? Lang.MINUTES.GetMessage() : Lang.MINUTE.GetMessage() ); } if ( seconds > 0 ) { if ( ret.Length > 0 ) ret.Append( ", " ); ret.Append( seconds ).Append( " " ).Append( seconds > 1 ? Lang.SECONDS.GetMessage() : Lang.SECOND.GetMessage() ); } return ret.ToString(); }; Esse segundo é em c#, eu tinha feito em c# pq eu tava precisando eu eu passei pra java e tals, eu só copiei da minha MP e colei aqui mesmo e dias? 1 dia 1min , 2sg Link para o comentário Compartilhar em outros sites More sharing options...
leonardosc Postado Dezembro 27, 2015 Denunciar Compartilhar Postado Dezembro 27, 2015 e dias? 1 dia 1min , 2sg Só tem h/m/s mas da pra tu implementar de boa ali. 1 dia = 86400s Na real é que esse código já é meio antigo, da pra fazer de um jeito mais simples... Link para o comentário Compartilhar em outros sites More sharing options...
leonardosc Postado Dezembro 27, 2015 Denunciar Compartilhar Postado Dezembro 27, 2015 (editado) Usa esse int seconds = 62340; final int DAY_VAL = 60*60*24, HOURS_VAL = 60*60, MINUTES_VAL = 60; int days, hours, minutes; days = seconds / DAY_VAL; seconds -= days * DAY_VAL; hours = seconds / HOURS_VAL; seconds -= hours * HOURS_VAL; minutes = seconds / MINUTES_VAL; seconds -= minutes * MINUTES_VAL; System.out.println( days + " dias, " + hours + " horas, " + minutes + " minutos " + seconds + " segundos" ); Agora é só usar o stringBuilder pra montar a string bunitinha, isso tu faz por que eu não vou dar tudo na boca. Editado Dezembro 27, 2015 por leonardosc Link para o comentário Compartilhar em outros sites More sharing options...
KickPost Postado Dezembro 27, 2015 Denunciar Compartilhar Postado Dezembro 27, 2015 <p style="text-align:center;"><img alt="logo-forum.png" src="http://www.gamersboard.com.br/logo-forum.png"/></p><br /></br><br /></br><br />Sua dúvida foi marcada como [Resolvido] e movido à área de dúvidas resolvidas.</br><br /></br><br /></br><br />Atenciosamente,</br><br />Gamer's Board</br> Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
_Kurimatzu_
Queria formatar o tempo +- assim.
// 2 minutos //
Tempo = 120;
Aí ficaria assim
2min 0sg
1min 59sg
Se o tempo for em horas ficaria assim:
10h 15min 10seg
Em dias:
1 dia , 1 hora , 3 segundos.
Alguém pode fazer esses métodos? ;-;
Link para o comentário
Compartilhar em outros sites
8 respostass a esta questão
Posts Recomendados