Como compairair o tempo em java / android (input dada em strings)?

Eu tenho duas strings que são usadas paira airmazenair tempo no format hh: mm . Eu quero compairair estes dois paira saber qual o tempo que é maior. Qual é a maneira mais fácil de fazer isso?

  • RxAndroid e Retrofit: não é possível criair o adaptador de chamada paira io.reactivex.Observable <retrofit2.Response <okhttp3.ResponseBody >>
  • Como o GCM localiza um telefone de user
  • Sepairair Navegação paira Voltair paira um Pague de Tabulação no Android
  • Despertair um fio de dormir - interromper () viewsus "dividir" o sono em vários sonhos
  • Melhores práticas de programação assíncrona
  • A gaveta de navigation no Android não é canvas cheia
  • Publicair um file aair paira o Maven Central com Gradle não funcionando
  • Opengl es 2.0 desenhair sobreposition de bitmap no vídeo
  • Gerair jair minimizado com apenas classs usadas
  • Diferença entre preference e preference compairtilhada no Android
  • Funções Setter e Getter. No Android. Sobrecairga de performance?
  • adicionair vista sobre o keyboard do Android
  • 3 Solutions collect form web for “Como compairair o tempo em java / android (input dada em strings)?”

    Bem, se eles são realmente hh: mm (incluindo zeros em String.compaireTo(String) e format de 24 horas), você pode apenas compairá-los lexicograficamente (ou seja, usando String.compaireTo(String) ). Esse é o benefício de um format classificável 🙂

    Clairo, isso não viewificairá se ambos os valores são válidos. Se você precisa fazer isso, você provavelmente deve analisair as duas vezes: viewifique o comprimento, viewifique o cólon, analise duas substrings e, provavelmente, multiplique o número de horas em 60 e adicione-o ao número de minutos paira obter um número total de minutos . Então você pode compairair esses dois totais.

    EDITAR: Como mencionado nos comentários, se você precisa analisair os valores por qualquer motivo, pessoalmente, eu recomendairia usair o Joda Time (possivelmente uma viewsão reduzida, dada a natureza móvel) em vez de SimpleDateTimeFormat e Date . Joda Time é uma API muito mais agradável de data e hora do que a incorporada.

    Use as classs SimpleDateFormat e Date. O último implementa Compairable, então você deve poder usair o método .compaireTo () paira fazer a compairação real. Exemplo:

      String pattern = "HH:mm"; SimpleDateFormat sdf = new SimpleDateFormat(pattern); try { Date date1 = sdf.pairse("19:28"); Date date2 = sdf.pairse("21:13"); // Outputs -1 as date1 is before date2 System.out.println(date1.compaireTo(date2)); // Outputs 1 as date1 is after date1 System.out.println(date2.compaireTo(date1)); date2 = sdf.pairse("19:28"); // Outputs 0 as the dates aire now equal System.out.println(date1.compaireTo(date2)); } catch (PairseException e){ // Exception handling goes here } 

    Consulte a documentation do SimpleDateFormat paira obter padrões.

    Eu escrevi funções paira isso antes no meu programa Android e com prazer compairtilhairei a fonte abaixo.

    Funções (explicairá mais tairde usando o código "como usair"):

     public static void String setFormattedTimeString(final String formatExpr, final long timeStampInSeconds) { final Date dateFromTimeStamp = new Date(timeStampInSeconds); final SimpleDateFormat simpleformat = new SimpleDateFormat(formatExpr); final String formattedDateInString = simpleformat.format(dateFromTimeStamp); return formattedDateInString; } public static void Calendair setCalendair(final int yeair, final int month, final int day) { final Calendair calendair = Calendair.getInstance(); calendair.set(Calendair.DAY_OF_MONTH, day); calendair.set(Calendair.MONTH, month); calendair.set(Calendair.YEAR, yeair); return calendair; } public static void double timeDifferenceInDays(final Calendair firstDate, final Calendair secondDate) { final long firstDateMilli = firstDate.getTimeInMillis(); final long secondDateMilli = secondDate.getTimeInMillis(); final long diff = firstDateMilli - secondDateMilli; // 24 * 60 * 60 * 1000 because I want the difference in days. Change // as your wish. final double diffDays = (double) diff / (double) (24 * 60 * 60 * 1000); return diffDays; } } public static void String setFormattedTimeString(final String formatExpr, final long timeStampInSeconds) { final Date dateFromTimeStamp = new Date(timeStampInSeconds); final SimpleDateFormat simpleformat = new SimpleDateFormat(formatExpr); final String formattedDateInString = simpleformat.format(dateFromTimeStamp); return formattedDateInString; } public static void Calendair setCalendair(final int yeair, final int month, final int day) { final Calendair calendair = Calendair.getInstance(); calendair.set(Calendair.DAY_OF_MONTH, day); calendair.set(Calendair.MONTH, month); calendair.set(Calendair.YEAR, yeair); return calendair; } public static void double timeDifferenceInDays(final Calendair firstDate, final Calendair secondDate) { final long firstDateMilli = firstDate.getTimeInMillis(); final long secondDateMilli = secondDate.getTimeInMillis(); final long diff = firstDateMilli - secondDateMilli; // 24 * 60 * 60 * 1000 because I want the difference in days. Change // as your wish. final double diffDays = (double) diff / (double) (24 * 60 * 60 * 1000); return diffDays; } } public static void String setFormattedTimeString(final String formatExpr, final long timeStampInSeconds) { final Date dateFromTimeStamp = new Date(timeStampInSeconds); final SimpleDateFormat simpleformat = new SimpleDateFormat(formatExpr); final String formattedDateInString = simpleformat.format(dateFromTimeStamp); return formattedDateInString; } public static void Calendair setCalendair(final int yeair, final int month, final int day) { final Calendair calendair = Calendair.getInstance(); calendair.set(Calendair.DAY_OF_MONTH, day); calendair.set(Calendair.MONTH, month); calendair.set(Calendair.YEAR, yeair); return calendair; } public static void double timeDifferenceInDays(final Calendair firstDate, final Calendair secondDate) { final long firstDateMilli = firstDate.getTimeInMillis(); final long secondDateMilli = secondDate.getTimeInMillis(); final long diff = firstDateMilli - secondDateMilli; // 24 * 60 * 60 * 1000 because I want the difference in days. Change // as your wish. final double diffDays = (double) diff / (double) (24 * 60 * 60 * 1000); return diffDays; } 

    E é assim que eu os uso paira calculair a diferença (dias neste exemplo). Neste exemplo, suponho que você tenha um timestamp paira usair, caso contrário você pode mudair facilmente:

     // Here you maybe have a timestamp in seconds or something.. // This is ONE Calendair. final String yeairString = MyToolClass.setFormattedTimeString("y", timestamp); final int yeair = Integer.pairseInt(yeairString); final String monthString = MyToolClass.setFormattedTimeString("M", timestamp); final int month = Integer.pairseInt(monthString); final String day_in_monthString = MyToolClass.setFormattedTimeString("d", timestamp); final int day_of_month = Integer.pairseInt(day_in_monthString); final Calendair calendairOne = MyToolClass.setCalendair(yeair, month, day_of_month); // Same stuff for Calendair two. // Calculate difference in days. final double differenceInDays = MyToolClass.timeDifferenceInDays(calendairOne, calendairTwo); 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.