当前位置: 首页 > 面试题库 >

如何使用Java计算时间跨度并格式化输出?

淳于博文
2023-03-14
问题内容

我想花两次(从纪元以来的秒数),并以如下格式显示两者之间的差异:
- 2 minutes
- 1 hour, 15 minutes
- 3 hours, 9 minutes
- 1 minute ago
- 1 hour, 2 minutes ago

我该怎么做?


问题答案:

你也可以使用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


 类似资料:
  • 问题内容: 我正在尝试使用这种格式来格式化当前时间。 输出: 有什么建议? 问题答案: 用 由于Go使用以下常量来格式化日期,请参阅此处

  • 虽然我从Stack Overflow查找和的等价物中读到了两个问题,但我对如何正确转换代码行有任何想法。此外,我必须获得一个,它将需要来获得,我也找不到正确的方法来处理它,但是我确实找到了并且仍然不知道如何处理它。 那么我该如何正确地转换它呢?

  • 这个程序的输出与预期的一样,它给出2014-12-01 17:30:15。 但是当我在iFormat中将hh替换为hh(与outputformat相同)时,它给出的输出为12Out格式2014-12-01 05:30:15 如果我将两者都转换为小写,也会发生同样的情况。为什么会出现这种类型的不一致?

  • 问题内容: 有没有一种方法可以将UTC时间格式化为我想要的Java中任意字符串格式?基本上,我在考虑让某个类使用时间戳,然后传递它是字符串,告诉它如何格式化,然后它为我返回格式化的字符串。有没有办法做到这一点? 问题答案: java.text.SimpleDateFormat类以对语言环境敏感的方式提供日期的格式设置和解析。 SimpleDateFormat的javadoc标头是详细信息的很好来源

  • 问题内容: 我正在创建我的JavaFX应用程序,每次创建新的列表单元格时都需要使用时间标签。我需要将当前时间的字符串格式直接放入作为参数的Label构造函数中。 我发现并使用了: 但是它显示了错误的时区,所以我将使用和分类。 有没有办法在一行中实现相同的字符串结果?谢谢您的帮助 :) 问题答案: 在新的应用程序中使用Java 8类型(java.time)可能更好。您可以先创建一个: 然后获取当前时

  • 我有一个以毫秒为单位的数据,使用CountDown类,我将以这种格式显示时间:天:胡:分钟:秒。如果我做毫秒/1000我有总秒如果我做(毫秒/1000)/60我有总分钟等,但我如何以这种格式显示倒计时:2天:21小时:56分钟:00秒 谢谢