studio - Formato de la fecha relativa al formato legible por el ser humano en Android usando la API DateUtils de Android
obtener la fecha actual en java android (2)
Tengo un campo de fecha (lastUpdated). Quiero traducir esta fecha a un formato legible para el ser humano, como "hoy", "hace 1 día", "hace 2 días", ...
Estoy usando la API android.text.format.DateUtils que se incluye en la biblioteca de Android.
Aquí está mi intento:
DateUtils.getRelativeDateTimeString(context,
lastUpdated.getTime(),
DateUtils.DAY_IN_MILLIS,
DateUtils.WEEK_IN_MILLIS,
DateUtils.FORMAT_SHOW_YEAR);
Aquí está la salida:
0 day ago, 12:00am
yesterday, 9:30am
2 days ago, 1:30pm
Sep 4, 12:30pm
El resultado que esperaba: (No hay información de tiempo)
0 day ago --------- This should be ''today''
yesterday
2 days ago
Sep 4
OBSERVA que, si borro el tiempo de lastUpdated. Mostrará ''12: 00am ''para información de tiempo.
¿Alguien tiene alguna idea? ¿Hay alguna manera de eliminar el tiempo de salida?
¡Gracias!
Parece que quieres tener un controlador personalizado para los tiempos que son recientes, y algo más estándar para las fechas que están más lejos. algo como esto funcionaria
public String getTimeDiff(long secondsTimeDiff)
{
long secondsInOneDay = 84600;
int maxDaysAgo = 10;
if ( secondsTimeDiff < secondsInOneDay)
{
return "today";
}
else if ( secondsTimeDiff < 2*secondsInOneDay)
{
return "yesterday";
}
else if ( secondsTimeDiff < maxDaysAgo*secondsInOneDay)
{
int days = (int) (secondsTimeDiff / secondsInOneDay);
return days + " days ago";
}
else
{
//use normal DateUtils logic here...
return "....";
}
}
Puedes usar DateUtils.getRelativeTimeSpanString para eso:
long now = System.currentTimeMillis();
DateUtils.getRelativeTimeSpanString(lastUpdated.getTime(), now, DateUtils.DAY_IN_MILLIS);