android getRelativeTimeSpanString()bug?

时间:2011-12-31 12:53:42

标签: java android datetime

使用android getRelativeTimeSpanString()中的内置DateUtil方法我无法获得“几分钟前”“几天前”等等时间已过,文档说我应该收到的响应,而不是我得到的结果只是以“2010年12月12日”的方式显示实际日期,不确定这是一个错误还是我曾尝试getRelativeTimeSpanString (long time, long now, long minResolution)getRelativeTimeSpanString (long startTime)的内容,两者都只返回实际变量“长时间”的日期

这是我的代码

private void setJoineddate() {
    Date currentDate = new Date();
    long currentDateLong = currentDate.getTime();
    long oldDate = join_date.getTime();

    CharSequence relativeTime = DateUtils
                         .getRelativeTimeSpanString(oldDate, currentDateLong, 0);
    joindate.setText(relativeTime);

}

4 个答案:

答案 0 :(得分:10)

不是错误。 getRelativeTimeSpanString只会为您提供相对时间字符串,最长可达一周的时间。因此,如果您将DateUtils.getRelativeTimeSpanString(time2, now, 0L, DateUtils.FORMAT_ABBREV_RELATIVE)与以下值一起使用

long now = System.currentTimeMillis();
long time2 = now - DateUtils.WEEK_IN_MILLIS;

如果今天是1 October,你将获得8 October,但

long now = System.currentTimeMillis();
long time2 = now - DateUtils.WEEK_IN_MILLIS + 1;

会给你7 days ago

答案 1 :(得分:3)

试试此代码

DateUtils.getRelativeTimeSpanString(oldDate, currentDateLong,
    0L, DateUtils.FORMAT_ABBREV_ALL);

它会返回Just now3 minutes ago等等。阅读文档并使用第三个参数来修改函数返回的字符串。

答案 2 :(得分:1)

我有同样的问题。我在模拟器中测试我的应用程序,但后来我决定在我的nexus 7上安装应用程序,只是为了看看它在设备上的外观以及相对时间是否正常。

事实证明,模拟器的日期/时间仍设置为模拟器创建的原始日期。我想这是因为我从快照启动,但由于某种原因,自动更新日期/时间不起作用。我手动改变了模拟器中的时间,神奇地说,相对时间是预期的。

不要忘记更改时区。

答案 3 :(得分:0)

我的设备上也出现此问题,因为未设置设备时钟并显示1. 1970年1月。设置正确的日期后,它有效。