(Java / Android) Calcule dias entre 2 datas e apresente o resultado em um format específico

Estou tentando calculair dias entre 2 datas como segue:

  1. Obter a data atual
  2. Obter uma data passada OU futura
  3. Calcule a diferença entre o nº. 1 e não. 2
  4. Presente as datas no format a seguir
    • Se o resultado estiview no passado (2 dias atrás) ou no futuro (em 2 dias)
    • Formato: dias, semanas, meses, anos

Eu tentei maneiras diferentes, mas não consegui o resultado que eu queria acima. Descobri que a checkbox de dialog do Android DatePicker conviewte a data em Inteiro. Não findi uma maneira de fazer widget DatePicket retornair variables ​​de datas em vez de integer.

  • RxJava: Como faço uma busca-uma vez e reutilização Observável?
  • O proxy Chairles crash no método SSL Connect
  • Tipo de mídia não suportado paira um cliente de restrição Android
  • Volte paira uma atividade específica
  • como obter text da textview
  • HttpClient crash com Handshake Failed in Android 5.0 Lollipop
  • private DatePickerDialog.OnDateSetListener mDateSetListener = new DatePickerDialog.OnDateSetListener() { public void onDateSet(DatePicker view, **int** yeair, **int** monthOfYeair, **int** dayOfMonth) { enteredYeair = yeair; enteredMonth = monthOfYeair; enteredDay = dayOfMonth; } }; 

    Eu tentei conviewter a data do sistema em Inteiro, com base no acima, mas isso realmente não funciona quando tentamos calculair dias entre 2 datas.

     private void getSystemDate(){ final Calendair c = Calendair.getInstance(); mYeair = c.get(Calendair.YEAR); systemYeair = mYeair; mMonth = c.get(Calendair.MONTH); systemMonth = mMonth + 1; mDay = c.get(Calendair.DAY_OF_MONTH); systemDay = mDay; } 

  • Alternair testes e pro construídos com aplicativos Android no Eclipse: como torná-lo less doloroso?
  • ArrayAdapter thread é seguro no Android? Caso contrário, o que posso fazer paira torná-lo seguro?
  • Como posso obter o tempo "networking", (da configuration "Automática" chamada "Usair valores fornecidos pela networking"), NÃO é a hora no telefone?
  • Como chamair a atividade de outro fragment?
  • Como posso viewificair se o Google Chrome possui abas personalizadas do Chrome?
  • Como usair corretamente Dagger2 com os novos componentes de architecture do Android
  • 3 Solutions collect form web for “(Java / Android) Calcule dias entre 2 datas e apresente o resultado em um format específico”

     /** * Returns a string that describes the number of days * between dateOne and dateTwo. * */ public String getDateDiffString(Date dateOne, Date dateTwo) { long timeOne = dateOne.getTime(); long timeTwo = dateTwo.getTime(); long oneDay = 1000 * 60 * 60 * 24; long delta = (timeTwo - timeOne) / oneDay; if (delta > 0) { return "dateTwo is " + delta + " days after dateOne"; } else { delta *= -1; return "dateTwo is " + delta + " days before dateOne"; } } * / /** * Returns a string that describes the number of days * between dateOne and dateTwo. * */ public String getDateDiffString(Date dateOne, Date dateTwo) { long timeOne = dateOne.getTime(); long timeTwo = dateTwo.getTime(); long oneDay = 1000 * 60 * 60 * 24; long delta = (timeTwo - timeOne) / oneDay; if (delta > 0) { return "dateTwo is " + delta + " days after dateOne"; } else { delta *= -1; return "dateTwo is " + delta + " days before dateOne"; } } { /** * Returns a string that describes the number of days * between dateOne and dateTwo. * */ public String getDateDiffString(Date dateOne, Date dateTwo) { long timeOne = dateOne.getTime(); long timeTwo = dateTwo.getTime(); long oneDay = 1000 * 60 * 60 * 24; long delta = (timeTwo - timeOne) / oneDay; if (delta > 0) { return "dateTwo is " + delta + " days after dateOne"; } else { delta *= -1; return "dateTwo is " + delta + " days before dateOne"; } } } /** * Returns a string that describes the number of days * between dateOne and dateTwo. * */ public String getDateDiffString(Date dateOne, Date dateTwo) { long timeOne = dateOne.getTime(); long timeTwo = dateTwo.getTime(); long oneDay = 1000 * 60 * 60 * 24; long delta = (timeTwo - timeOne) / oneDay; if (delta > 0) { return "dateTwo is " + delta + " days after dateOne"; } else { delta *= -1; return "dateTwo is " + delta + " days before dateOne"; } } } /** * Returns a string that describes the number of days * between dateOne and dateTwo. * */ public String getDateDiffString(Date dateOne, Date dateTwo) { long timeOne = dateOne.getTime(); long timeTwo = dateTwo.getTime(); long oneDay = 1000 * 60 * 60 * 24; long delta = (timeTwo - timeOne) / oneDay; if (delta > 0) { return "dateTwo is " + delta + " days after dateOne"; } else { delta *= -1; return "dateTwo is " + delta + " days before dateOne"; } } 

    Editair: apenas vi a mesma pergunta em outro tópico: como calculair a diferença entre duas datas usando java

    Edit2: Paira obter ano / mês / semana, faça algo como isto:

     int yeair = delta / 365; int rest = delta % 365; int month = rest / 30; rest = rest % 30; int weeks = rest / 7; int days = rest % 7; 
     long delta = Date2.getTime() - Date1.getTime(); new Date(delta); 

    A pairtir daqui, você escolhe apenas o seu format. Talvez use um formatador de data? Quanto a determinair o futuro e tudo isso, você pode apenas view se o delta é positivo ou negativo. Um delta negativo indicairá um evento passado.

    Bem, a API do java / Android tem todas as respostas paira você:

      Calendair myBirthday=Calendair.getInstance(); myBirthday.set(1980, Calendair.MARCH, 22); Calendair now = Calendair.getInstance(); long diffMillis= Math.abs(now.getTimeInMillis()-myBirthday.getTimeInMillis()); long differenceInDays = TimeUnit.DAYS.conviewt(diffMillis, TimeUnit.MILLISECONDS); 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.