前一段时间用于Android / java

时间:2014-08-07 05:38:58

标签: java android

我是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也告诉我。 但是如何将我的日期和时间传递给它。

任何简单的代码都可以。

由于

3 个答案:

答案 0 :(得分:44)

您要显示的内容称为相对时间显示。 Android提供方法 显示相对于当前时间的时间。您不必为此目的使用任何第三方库。

您可以使用

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

Refer docs Here

例如

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)

创建以下逻辑:

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

  1. % it by 3600*365
    • 如果result > 0然后显示年前
  2. else % it by 3600 * 30
    • 如果result > 0然后显示月前
  3. else % it by 3600 * 7
    • 如果result > 0然后显示周前
  4. else % it by 3600
    • 如果result > 0然后显示前一天
  5. else % it by 3600 / 24
    • 如果result > 0然后显示小时前
  6. else % it by 60
    • 如果result > 0然后显示分钟前
  7. 注意:%表示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.