使用 PrettyTime 来格式化 Java 的日期时间

当你希望能够将时间格式成易于用户阅读的格式,如"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 );
}

另外我觉得超过一定时间再用这种方式来显示就不太直观,大家讨论下怎样的时间显示才是最友好的呢?


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值