时间前为Android / Java

我是新手到Java和Android。 我的一个Android新闻应用程序,我显示的时间为“2014年8月7日上午8时20分”

但是我需要像这样显示它:

5 mins ago 1 hour ago 2 days ago 

find了很多像我们这样漂亮的图书馆,joda。 但我不知道如何将它添加到我的Android应用程序。 即使这个链接https://stackoverflow.com/a/13018647/2020685给我看。 但是如何把我的date和时间传递给它。

任何简单的代码来做到这一点。

谢谢

Solutions Collecting From Web of "时间前为Android / Java"

你想要显示的是相对时间显示。 Android提供了相对于当前时间显示时间的方法。 您不必为此使用任何第三方库。

您可以使用

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

请参阅文档在这里

例如。

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

UPDATE1:

你可以尝试下面的传递你的date,并获得它的毫秒。

 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; } 

希望它可以帮助你。

创build下面的逻辑:

将时间转换为秒数,从当前文件中获取差异(delta)

  1. % it by 3600*365
    • 如果result > 0则显示年份前
  2. else % it by 3600 * 30
    • 如果result > 0则显示月份(s)前
  3. else % it by 3600 * 7
    • 如果result > 0则显示周(s)前
  4. else % it by 3600
    • 如果result > 0则显示天(s)前
  5. else % it by 3600 / 24
    • 如果result > 0则显示小时前
  6. else % it by 60
    • 如果result > 0则显示分钟前

注意: %表示mod(模数操作)

 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.