我的服务器。返回时间:

"2016-01-24T16:00:00.000Z"

我想要

1:转换为字符串。

2:从服务器加载时,我希望它显示“time ago”。

请。帮我!

最佳答案

我主要看到三种方式:

a)使用SimpleDateFormatDateUtils的内置选项

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
  sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
  try {
         long time = sdf.parse("2016-01-24T16:00:00.000Z").getTime();
         long now = System.currentTimeMillis();
         CharSequence ago =
                    DateUtils.getRelativeTimeSpanString(time, now, DateUtils.MINUTE_IN_MILLIS);
        } catch (ParseException e) {
            e.printStackTrace();
        }

b)外部库ocpsoft/PrettyTime(基于java.util.Date)

在这里,您还必须使用SimpleDateFormat来生成time -result作为“2016-01-24T16:00:00.000Z”的解释。

在您的应用程序中的lib下面导入
implementation 'org.ocpsoft.prettytime:prettytime:4.0.1.Final'
PrettyTime prettyTime = new PrettyTime(Locale.getDefault());
String ago = prettyTime.format(new Date(time));

c)使用我的库Time4A(重量级,但具有最佳的i18n支持)
Moment moment = Iso8601Format.EXTENDED_DATE_TIME_OFFSET.parse("2016-01-24T16:00:00.000Z");
String ago = PrettyTime.of(Locale.getDefault()).printRelativeInStdTimezone(moment);

10-08 01:39