我是java和android的新手。我的一个Android新闻应用程序我将时间显示为" 2014年8月7日,上午8:20"
但我需要显示它:
5 mins ago
1 hour ago
2 days ago
发现很多图书馆,比如我们,joda。但我不知道如何将其添加到我的Android应用程序。 甚至这个链接https://stackoverflow.com/a/13018647/2020685也告诉我。 但是如何将我的日期和时间传递给它。
任何简单的代码都可以。
由于
答案 0 :(得分:44)
您要显示的内容称为相对时间显示。 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;
}
希望它对你有所帮助。
答案 1 :(得分:6)
创建以下逻辑:
% 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(模数运算)
答案 2 :(得分:2)
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
//...
这是Date.getTime()的java doc所说的:
* Returns the number of milliseconds since January 1, 1970, 00:00:00 GMT * represented by this <tt>Date</tt> object.