我有一个ListView
用户会发表评论。当他们点击“{1}”框附带的“提交”时,新评论会与当前数据库一起进入EditText
数据库时间。
我希望评论显示在列表视图中,其日期类似于Youtube格式。例如:“10秒前”,“1天前”,“52天前”。
我会使用Calendar对象,SimpleDateFormat,还有其他什么?
另外,我如何将日期存储在日期库中?我假设一些像UNIX日期戳可以轻松转换的东西。然后它会在ArrayAdapter中根据当前时间动态更改日期吗?
答案 0 :(得分:2)
您可以使用PrettyTime来实现这一目标。
为节省时间,我通常以毫秒计算时间。
答案 1 :(得分:1)
要实现此目的,您需要计算时间戳和当前时间戳之间的差异(为简单起见,请将它们保留在毫秒级)。结果将是“之前”的毫秒数。然后使用简单的数学,如减法和除法,你可以得到分钟数,天数,周数和你想要的任何数量。
编辑:我用这个:public static final long MILLIS_PER_SECOND = 1000;
public static final long MILLIS_PER_MINUTE = (MILLIS_PER_SECOND * 60);
public static final long MILLIS_PER_HOUR = (MILLIS_PER_MINUTE * 60);
public static final long MILLIS_PER_DAY = (MILLIS_PER_HOUR * 24);
public static final long MILLIS_PER_WEEK = (MILLIS_PER_DAY * 7);
public static final long MILLIS_PER_MONTH = (MILLIS_PER_DAY * 30);
public static final long MILLIS_PER_YEAR = (MILLIS_PER_MONTH * 12);
请注意,并非100%正确,因为我(故意,为了简单)使 false 假设月份总是30天,这也会影响MILLIS_PER_YEAR
。但我并不在乎 - 这不是我使用这些的火箭科学。但是,您可以通过以下方式设置MILLIS_PER_YEAR
来减少影响:
public static final long MILLIS_PER_YEAR = (MILLIS_PER_DAY * (7*31 + 4*30 + 28));
28
适用于2月份,在这种情况下,您只能在闰年中休息1天,而不是像之前版本中的5天。
答案 2 :(得分:0)
尝试使用DateUtils.getRelativeTimeSpanString格式化显示日期。