java - 如何在 Java 中计算时间跨度并格式化输出?

标签 java date time formatting

我想花两次(自纪元以来的秒数)并以如下格式显示两者之间的差异:

  • 2 分钟
  • 1 小时 15 分钟
  • 3 小时 9 分钟
  • 1 分钟前
  • 1 小时 2 分钟前

我怎样才能做到这一点??

最佳答案

既然大家都喊“YOODAA!!!”但是没有人发布一个具体的例子,这是我的贡献。

您也可以使用 Joda-Time 来执行此操作.使用Period代表一个时期。要以所需的人工表示格式化句点,请使用 PeriodFormatter您可以通过 PeriodFormatterBuilder 构建.

这是一个启动示例:

DateTime myBirthDate = new DateTime(1978, 3, 26, 12, 35, 0, 0);
DateTime now = new DateTime();
Period period = new Period(myBirthDate, now);

PeriodFormatter formatter = new PeriodFormatterBuilder()
    .appendYears().appendSuffix(" year, ", " years, ")
    .appendMonths().appendSuffix(" month, ", " months, ")
    .appendWeeks().appendSuffix(" week, ", " weeks, ")
    .appendDays().appendSuffix(" day, ", " days, ")
    .appendHours().appendSuffix(" hour, ", " hours, ")
    .appendMinutes().appendSuffix(" minute, ", " minutes, ")
    .appendSeconds().appendSuffix(" second", " seconds")
    .printZeroNever()
    .toFormatter();

String elapsed = formatter.print(period);
System.out.println(elapsed + " ago");

更加清晰简洁,不是吗?

现在打印出来了

32 years, 1 month, 1 week, 5 days, 6 hours, 56 minutes, 24 seconds ago

(咳,老,咳)

关于java - 如何在 Java 中计算时间跨度并格式化输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/635935/

相关文章:

java - 什么是多级通配符?语法困惑

yyyy-mm-dd hh :mm:ss aa help 的 JavaScript 转换

ios - 比较时间(格式为 HH :MM:SS) if between two times in IOS

c++ - 汇编操作的时间

java - 使用 Recycler View 和 Card View 获取轮播的点击位置

java - 所有键中的 HashMap 值都会更新

java - 为什么我的网页在 Spring WebFlow 重定向后过期了?

javascript - Intl.DateTimeFormat( )'s ` dateStyle` 和 `timeStyle` 是否使用操作系统首选项中定义的格式?

javascript - 时刻js : format date without zero padding

php - 将本地时间转换为 GMT