当你希望能够将时间格式成易于用户阅读的格式,如"12分钟前"、"2天前"、"至今3个月"等,那么你可以用 PrettyTime 来处理。一两行代码搞定,而不是像之前 OSC 傻乎乎的写了几十行代码,还经常出问题。
PrettyTime 支持多语言,可以在构造 PrettyTime 的时候传递一个 Locale 参数即可:
1
2
3
4
5
6
7
8
9
10
11
|
import
java.util.Date;
import
com.ocpsoft.pretty.time.PrettyTime;
public
class
BasicJavaApp
{
public
static
void
main(String[] args)
{
PrettyTime p =
new
PrettyTime(Locale.CHINESE);
System.out.println(p.format(
new
Date()));
}
}
|
默认 PrettyTime 的显示就很不错,但有一些可能看起来不太爽,例如 5 分钟之前的会统一显示为“片刻之前”。你可以通过 p.removeUnit(JustNow.class) 来干掉这样的显示。但是会引来一个问题,例如显示 xxx毫秒前,这样的显示我觉得没什么意义,那么你可以继续 p.remoteUnit(Millisecond.class) 来处理。
OSC 现在使用 PrettyTime 的简单设置如下:
1
2
3
4
5
6
|
private
final
static
PrettyTime PRETTY_TIME =
new
PrettyTime(Locale.CHINESE);
static
{
PRETTY_TIME.removeUnit(JustNow.
class
);
PRETTY_TIME.removeUnit(Second.
class
);
PRETTY_TIME.removeUnit(Millisecond.
class
);
}
|
另外我觉得超过一定时间再用这种方式来显示就不太直观,大家讨论下怎样的时间显示才是最友好的呢?