使用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);
}
答案 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 now
,3 minutes ago
等等。阅读文档并使用第三个参数来修改函数返回的字符串。
答案 2 :(得分:1)
我有同样的问题。我在模拟器中测试我的应用程序,但后来我决定在我的nexus 7上安装应用程序,只是为了看看它在设备上的外观以及相对时间是否正常。
事实证明,模拟器的日期/时间仍设置为模拟器创建的原始日期。我想这是因为我从快照启动,但由于某种原因,自动更新日期/时间不起作用。我手动改变了模拟器中的时间,神奇地说,相对时间是预期的。
不要忘记更改时区。
答案 3 :(得分:0)
我的设备上也出现此问题,因为未设置设备时钟并显示1. 1970年1月。设置正确的日期后,它有效。