如何在Java中计算“前段时间”?

2022-08-31 07:48:02

在Ruby on Rails中,有一个功能可以让你选择任何日期并打印出它的“很久以前”。

例如:

8 minutes ago
8 hours ago
8 days ago
8 months ago
8 years ago

有没有一种简单的方法可以在Java中做到这一点?


答案 1

看看PrettyTime图书馆。

它使用起来非常简单:

import org.ocpsoft.prettytime.PrettyTime;

PrettyTime p = new PrettyTime();
System.out.println(p.format(new Date()));
// prints "moments ago"

您还可以传入国际化邮件的区域设置:

PrettyTime p = new PrettyTime(new Locale("fr"));
System.out.println(p.format(new Date()));
// prints "à l'instant"

如注释中所述,Android 在 android.text.format.DateUtils 类中内置了此功能。


答案 2

你有没有考虑过TimeUnit枚举?对于这种事情来说,它可能非常有用

    try {
        SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
        Date past = format.parse("01/10/2010");
        Date now = new Date();

        System.out.println(TimeUnit.MILLISECONDS.toMillis(now.getTime() - past.getTime()) + " milliseconds ago");
        System.out.println(TimeUnit.MILLISECONDS.toMinutes(now.getTime() - past.getTime()) + " minutes ago");
        System.out.println(TimeUnit.MILLISECONDS.toHours(now.getTime() - past.getTime()) + " hours ago");
        System.out.println(TimeUnit.MILLISECONDS.toDays(now.getTime() - past.getTime()) + " days ago");
    }
    catch (Exception j){
        j.printStackTrace();
    }