2013-03-05 6 views
2

Итак, [DateUtils.getRelativeTimeSpanString()] [1] в Android SDK отлично подходит для отображения относительных времен, которые были в прошлом.DateUtils.getRelativeTimeSpanString для будущих дат

i.e: 5 дней назад, или 5 минут назад.

Но, похоже, это не так хорошо подходит для дат, которые в будущем. Кажется, он просто печатает дату.

Есть ли какие-либо простые альтернативы для генерации относительных строк временного интервала для дат, которые в будущем (не написав что-то, что определяет дни, часы, минуты, секунды, сравнивая два объекта календаря)?

Что-то длинное: через 5 дней или через 5 минут?

Вот в основном то, что я должен был бы сделать, и это выглядит просто вид грязного (примечание: этот код был написан только для поста и на самом деле не запускать через Java компилятор):

Calendar calendarIO = Calendar.getInstance(); 
calendarIO.set(2013, 2, 14, 7, 0); 

long milliseconds1 = calendarIO.getTimeInMillis(); 
long milliseconds2 = System.currentTimeMillis(); 
long diff = milliseconds1 - milliseconds2; 
long diffSeconds = diff/1000; 
long diffMinutes = diff/(60 * 1000); 
long diffHours = diff/(60 * 60 * 1000); 
long diffDays = diff/(24 * 60 * 60 * 1000); 

String relativeTime = ""; 
if (diffDays > 1) { 
    relativeTime = diffDays + " days"; 
} else if (diffDays > 0) { 
    relativeTime = diffDays + " days " + diffHours + " hours"; 
} else if (diffHours > 1) { 
    relativeTime = diffHours + " hours"; 
} else if (diffMinutes > 0) { 
    relativeTime = diffMinutes + " minutes."; 
} 

ответ

0
DateUtils.getRelativeTimeSpanString(endDate.getTime(), startDate.getTime(), DateUtils.FORMAT_ABBREV_RELATIVE); 

С следующей оговоркой:

дает завтра, а не в 1 день.

Смежные вопросы