Подтвердить что ты не робот

Время для Android/java

Я новичок в java и android. Одно из моих приложений для Android и Android отображает время как "7 августа 2014 года, 8:20 утра"

Но мне нужно отобразить его как:

5 mins ago    
1 hour ago    
2 days ago

Нашел много таких библиотек, как мы, красивое время, йода. Но я не знаю, как добавить его в свое приложение для Android. Даже эта ссылка qaru.site/info/175209/... показывает мне. Но как передать мне дату и время.

Любой простой код для этого.

Спасибо

4b9b3361

Ответ 1

То, что вы хотите отобразить, называется отображением относительного времени. Android предоставляет методы для отображения времени относительно текущего времени. Для этой цели вам не нужно использовать какую-либо стороннюю библиотеку.

Вы можете использовать

DateUtils.getRelativeTimeSpanString(long time, long now, long minResolution)

Обратитесь к документам здесь

например.

DateUtils.getRelativeTimeSpanString(your_time_in_milliseconds, current_ time_in_millisecinds,DateUtils.MINUTE_IN_MILLIS);

Update1:

Вы можете попробовать следовать, чтобы передать дату и получить миллисекунды для нее.

public static long getDateInMillis(String srcDate) {
    SimpleDateFormat desiredFormat = new SimpleDateFormat(
        "d MMMM yyyy, hh:mm aa");

    long dateInMillis = 0;
    try {
        Date date = desiredFormat.parse(srcDate);
        dateInMillis = date.getTime();
        return dateInMillis;
    } catch (ParseException e) {
        Log.d("Exception while parsing date. " + e.getMessage());
        e.printStackTrace();
    }

    return 0;
    }

Надеюсь, это поможет вам.

Ответ 2

Создайте следующую логику:

Преобразуйте свое время в секундах, получите diff (delta) из текущего файла:

  • % it by 3600*365
    • если result > 0 затем отображать год назад.
  • else % it by 3600 * 30
    • если result > 0 затем отобразить месяц (а) назад
  • else % it by 3600 * 7
    • если result > 0 затем показывать неделю назад.
  • else % it by 3600
    • если result > 0 затем отобразит день назад.
  • else % it by 3600 / 24
    • если result > 0 затем отобразится час (а) назад
  • else % it by 60
    • если result > 0 затем отобразит минуту назад.

ПРИМЕЧАНИЕ:% означает mod (операция модуля)

Ответ 3

Date nowDate=new Date();
Date yourPassDate=//you have a date here.
long now=nowDate.getTime();
long time=yourPassDate.getTime();


final long diff = now - time;  //now you have a date interval representing with mileseconds.
//you can use this diff to do something like:
if (diff <1000*60)//less than one minute
    //...
else if (diff <1000*60*60) //less than 1 hour
    //...    
else if (diff < 1000*60*60*24)//less than one day
    //...

Это то, что java doc Date.getTime() сказал:

 * Returns the number of milliseconds since January 1, 1970, 00:00:00 GMT
 * represented by this <tt>Date</tt> object.