【发布时间】:2017-01-06 11:06:49
【问题描述】:
我使用DateUtils.getRelativeTimeSpanString() 来显示发布帖子的时间。
它返回的字符串是这样的:1 分钟前,但我希望是 1 m 或 1 h 等等on (缩短且无前)。
我可以将“小时”替换为“h”或“分钟”替换为“m”,但如果语言与英语不同,它将无法正常工作。这就是Twitter 现在正在使用的东西。 英文/西里尔文通过 Twitter 显示的方式。
更新:我会接受@Bradley Wilson 的回答,尽管我会在这里添加更清洁的解决方案(再次使用 JodaTime 包)。此外,其余答案也可以针对相同的结果进行修改,因此它们值得投票。谢谢大家:
DateTime postMaded = new DateTime(your previous date);
DateTime nowUpdate = new DateTime();
Period period = new Period(postMaded, nowUpdate);
PeriodFormatter formatter;
Locale current = ConverterMethods.getCurrentLocale();
if (current.getLanguage().contentEquals(any Cyrillic language )) {
if (period.getYears() != 0) {
formatter = new PeriodFormatterBuilder().appendYears().appendSuffix(" г.").printZeroNever().toFormatter();
} else if (period.getMonths() != 0) {
formatter = new PeriodFormatterBuilder().appendMonths().appendSuffix(" м").printZeroNever().toFormatter();
} else if (period.getWeeks() != 0) {
formatter = new PeriodFormatterBuilder().appendWeeks().appendSuffix(" седм.").printZeroNever().toFormatter();
} else if (period.getDays() != 0) {
formatter = new PeriodFormatterBuilder().appendDays().appendSuffix(" д").printZeroNever().toFormatter();
} else if (period.getHours() != 0) {
formatter = new PeriodFormatterBuilder().appendHours().appendSuffix(" ч").printZeroNever().toFormatter();
} else if (period.getMinutes() != 0) {
formatter = new PeriodFormatterBuilder().appendMinutes().appendSuffix(" мин").printZeroNever().toFormatter();
} else {
formatter = new PeriodFormatterBuilder().appendSeconds().appendSuffix(" с").printZeroNever().toFormatter();
}
} else {
if (period.getYears() != 0) {
formatter = new PeriodFormatterBuilder().appendYears().appendSuffix(" y").printZeroNever().toFormatter();
} else if (period.getMonths() != 0) {
formatter = new PeriodFormatterBuilder().appendMonths().appendSuffix(" mon").printZeroNever().toFormatter();
} else if (period.getWeeks() != 0) {
formatter = new PeriodFormatterBuilder().appendWeeks().appendSuffix(" w").printZeroNever().toFormatter();
} else if (period.getDays() != 0) {
formatter = new PeriodFormatterBuilder().appendDays().appendSuffix(" d").printZeroNever().toFormatter();
} else if (period.getHours() != 0) {
formatter = new PeriodFormatterBuilder().appendHours().appendSuffix(" h").printZeroNever().toFormatter();
} else if (period.getMinutes() != 0) {
formatter = new PeriodFormatterBuilder().appendMinutes().appendSuffix(" m").printZeroNever().toFormatter();
} else {
formatter = new PeriodFormatterBuilder().appendSeconds().appendSuffix(" s").printZeroNever().toFormatter();
}
}
【问题讨论】:
-
Joda-Time (github.com/dlew/joda-time-android) 有一些不错的选择来做这样的事情。
-
如果您指定包含
Period、PeriodFormatter、PeriodFormatterBuilder类的包会很有帮助 -
我添加了它。感谢您指出。
标签: java android time java-time