1

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

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

我会使用 Calendar 对象 SimpleDateFormat 吗?

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

4

3 回答 3

2

您可以使用PrettyTime来实现。

为了节省时间,我通常以毫秒为单位节省时间。

于 2012-09-03T19:57:19.067 回答
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% 正确的,因为我(为了简单起见)做了错误的假设,月份总是 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 天。

于 2012-09-03T19:59:37.723 回答
0

尝试 DateUtils.getRelativeTimeSpanString 格式化显示日期。

于 2012-09-15T16:03:21.790 回答