-1

现在我正在使用 Android Time Ago 我几天前得到但几周前没有得到

在这里我试过:

CharSequence    CS = DateUtils.getRelativeTimeSpanString(DateUtils.MINUTE_IN_MILLIS, now.getTime(),
                    DateUtils.WEEK_IN_MILLIS, 0);

正是我需要的是,如果它不到一周应该显示这些天数。

如果一周及以上显示多少周并达到一个月应该显示一个月前或两个月前像继续

我怎么能得到这个任何人都可以帮助我。

4

2 回答 2

1

您可以使用我的库 ( Timeago ) 获取 Java/Android 的准确 Timeago,至于显示过去和未来的日期时间值,您可以查看此示例以获取当前时间:

long timeInMillis = System.currentTimeMillis();
String text = TimeAgo.using(timeInMillis);

对于未来的日期,您可以使用java.util.Calendar类,并将日期值设置为大于当前日期,然后将时间作为 long 类型作为此类的输入。

于 2018-09-02T06:30:23.697 回答
0

您无法通过现有的DateUtils. 您可以为此使用此实现,但请记住,它仅适用于过去(几周、一个月、几年)。如果你想处理未来,那么你需要关心那个用例。

public static final long AVERAGE_MONTH_IN_MILLIS = DateUtils.DAY_IN_MILLIS * 30;

private String getRelationTime(long time) {
    final long now = new Date().getTime();
    final long delta = now - time;
    long resolution;
    if (delta <= DateUtils.MINUTE_IN_MILLIS) {
        resolution = DateUtils.SECOND_IN_MILLIS;
    } else if (delta <= DateUtils.HOUR_IN_MILLIS) {
        resolution = DateUtils.MINUTE_IN_MILLIS;
    } else if (delta <= DateUtils.DAY_IN_MILLIS) {
        resolution = DateUtils.HOUR_IN_MILLIS;
    } else if (delta <= DateUtils.WEEK_IN_MILLIS) {
        resolution = DateUtils.DAY_IN_MILLIS;
    } else if (delta <= AVERAGE_MONTH_IN_MILLIS) { 
        return Integer.toString((int) (delta / DateUtils.WEEK_IN_MILLIS)) + " weeks(s) ago";
    } else if (delta <= DateUtils.YEAR_IN_MILLIS) {
        return Integer.toString((int) (delta / AVERAGE_MONTH_IN_MILLIS)) + " month(s) ago";
    } else {
        return Integer.toString((int) (delta / DateUtils.YEAR_IN_MILLIS)) + " year(s) ago";
    }
    return DateUtils.getRelativeTimeSpanString(time, now, resolution).toString();
}
于 2014-12-12T10:17:19.660 回答