Время для Android/java
Я новичок в java и android. Одно из моих приложений для Android и Android отображает время как "7 августа 2014 года, 8:20 утра"
Но мне нужно отобразить его как:
5 mins ago
1 hour ago
2 days ago
Нашел много таких библиотек, как мы, красивое время, йода. Но я не знаю, как добавить его в свое приложение для Android.
Даже эта ссылка qaru.site/info/175209/... показывает мне.
Но как передать мне дату и время.
Любой простой код для этого.
Спасибо
Ответы
Ответ 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.