我有一个ListView
用户将发表评论。当他们点击附加到框的“提交”时,新评论与当前时间一起EditText
进入数据库。MySQL
我希望评论出现在列表视图中,日期类似于 Youtube 格式。例如:“10 秒前”、“1 天前”、“52 天前”。
我会使用 Calendar 对象 SimpleDateFormat 吗?
另外,我将如何将日期存储在数据库中?我假设一些容易转换的东西,比如 UNIX 日期戳。然后它会在我根据当前时间动态更改日期的 ArrayAdapter 中吗?
我有一个ListView
用户将发表评论。当他们点击附加到框的“提交”时,新评论与当前时间一起EditText
进入数据库。MySQL
我希望评论出现在列表视图中,日期类似于 Youtube 格式。例如:“10 秒前”、“1 天前”、“52 天前”。
我会使用 Calendar 对象 SimpleDateFormat 吗?
另外,我将如何将日期存储在数据库中?我假设一些容易转换的东西,比如 UNIX 日期戳。然后它会在我根据当前时间动态更改日期的 ArrayAdapter 中吗?
您可以使用PrettyTime来实现。
为了节省时间,我通常以毫秒为单位节省时间。
为此,您需要计算时间戳和当前时间戳之间的差异(为简单起见,以毫秒为单位)。结果将是“之前”的毫秒数。然后使用简单的数学,如减法和除法,你可以得到分钟数、天数、周数和任何你想要的。
编辑:我用这个:
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 天。
尝试 DateUtils.getRelativeTimeSpanString 格式化显示日期。