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

新手上路,请多包涵

在 Ruby on Rails 中,有一个功能允许您获取任何日期并打印出它是“多久以前”的。

例如:

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

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

原文由 jts 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 453
2 个回答

查看 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 类中。

原文由 ataylor 发布,翻译遵循 CC BY-SA 3.0 许可协议

您是否考虑过 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();
    }

原文由 Ben J 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题