Android ListView中的自定义日期(Java格式)

时间:2012-09-03 19:53:49

标签: java android date android-listview

我有一个ListView用户会发表评论。当他们点击“{1}”框附带的“提交”时,新评论会与当前数据库一起进入EditText数据库时间。

我希望评论显示在列表视图中,其日期类似于Youtube格式。例如:“10秒前”,“1天前”,“52天前”。

我会使用Calendar对象,SimpleDateFormat,还有其他什么?

另外,我如何将日期存储在日期库中?我假设一些像UNIX日期戳可以轻松转换的东西。然后它会在ArrayAdapter中根据当前时间动态更改日期吗?

3 个答案:

答案 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格式化显示日期。