使用Android DateUtils API在Android中格式化相对于人类可读格式的日期

我有一个日期字段(lastUpdated)。 我想把这个日期翻译成人类可读的格式,例如’今天’,’1天前’,’2天前’,……

我正在使用Android库中包含的android.text.format.DateUtils API。

这是我的尝试:

DateUtils.getRelativeDateTimeString(context, lastUpdated.getTime(), DateUtils.DAY_IN_MILLIS, DateUtils.WEEK_IN_MILLIS, DateUtils.FORMAT_SHOW_YEAR); 

这是输出:

 0 day ago, 12:00am yesterday, 9:30am 2 days ago, 1:30pm Sep 4, 12:30pm 

我预期的结果:(没有时间信息)

 0 day ago --------- This should be 'today' yesterday 2 days ago Sep 4 

请注意,如果我从lastUpdated清除时间。 它会显示’12:00am’的时间信息。

有人有什么想法吗? 有没有办法从输出中删除时间?

谢谢!

您可以使用DateUtils.getRelativeTimeSpanString :

 long now = System.currentTimeMillis(); DateUtils.getRelativeTimeSpanString(lastUpdated.getTime(), now, DateUtils.DAY_IN_MILLIS); 

看起来你想拥有一个最近的时间的自定义处理程序,以及更远的日期更多的stdnard。 这样的事情会起作用:

 public String getTimeDiff(long secondsTimeDiff) { long secondsInOneDay = 84600; int maxDaysAgo = 10; if ( secondsTimeDiff < secondsInOneDay) { return "today"; } else if ( secondsTimeDiff < 2*secondsInOneDay) { return "yesterday"; } else if ( secondsTimeDiff < maxDaysAgo*secondsInOneDay) { int days = (int) (secondsTimeDiff / secondsInOneDay); return days + " days ago"; } else { //use normal DateUtils logic here... return "...."; } }