gpt4 book ai didi

java - 在 Android 中以自定义格式显示相对日期

转载 作者:行者123 更新时间:2023-11-29 09:32:56 26 4
gpt4 key购买 nike

我想将日期转换为人类可读的格式。我正在使用 DateUtils. getRelativeDateTimeString ,但这不符合标准。我得到的输出看起来像:1 小时 15 分钟。以前等

我想知道是否可以将格式更改为:

3m 而不是 3 分钟。以前

1h 而不是 1 小时。 15 分钟以前

使用 DateUtils 还是有其他方法可以做到这一点?

更准确地说,我正在寻找与此 angular-filter 等效的 Android您可以轻松更改相对日期的格式(例如:{{minutes}} 分钟前{{minutes}}m

为了让自己清楚,我不是在寻找一种格式化日期的方法,而是将日期转换为人类可读的格式,例如“今天”、“1 小时”、“38 分钟”(类似于 facebook 的相对日期).

最佳答案

经过一番研究,我发现了一些库,例如 Time4A , Joda-Time , PrettyTime , Android-Ago .

但是,我决定不使用库并覆盖其文本资源,而是创建一个方法并将文本存储在 strings.xml 中,以备将来可能的本地化之用。

    private static final int SECOND_MILLIS = 1000;
private static final int MINUTE_MILLIS = 60 * SECOND_MILLIS;
private static final int HOUR_MILLIS = 60 * MINUTE_MILLIS;
private static final int DAY_MILLIS = 24 * HOUR_MILLIS;
private static final int WEEK_MILLIS = 7 * DAY_MILLIS;

public static String getTimeAgo(Date date, Context context) {
Date now = Calendar.getInstance().getTime();
final long diff = now.getTime() - date.getTime();

if (diff < SECOND_MILLIS) {
return context.getString(R.string.just_now);
} else if (diff < MINUTE_MILLIS) {
return diff / SECOND_MILLIS + context.getString(R.string.seconds_ago);
} else if (diff < 2 * MINUTE_MILLIS) {
return context.getString(R.string.a_minute_ago);
} else if (diff < 59 * MINUTE_MILLIS) {
return diff / MINUTE_MILLIS + context.getString(R.string.minutes_ago);
} else if (diff < 90 * MINUTE_MILLIS) {
return context.getString(R.string.an_hour_ago);
} else if (diff < 24 * HOUR_MILLIS) {
return diff / HOUR_MILLIS + context.getString(R.string.hours_ago);
} else if (diff < 48 * HOUR_MILLIS) {
return context.getString(R.string.yesterday);
} else if (diff < 6 * DAY_MILLIS) {
return diff / DAY_MILLIS + context.getString(R.string.days_ago);
} else if (diff < 11 * DAY_MILLIS) {
return context.getString(R.string.a_week_ago);
} else {
return diff / WEEK_MILLIS + context.getString(R.string.weeks_ago);
}
}

关于java - 在 Android 中以自定义格式显示相对日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42253893/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com