当前位置: 首页 > 知识库问答 >
问题:

为什么我不能在java.time中获得以分钟或小时为单位的持续时间?

公羊俊
2023-03-14

对于Java8及更高版本中新的JSR 310 date API(Java.time包)中的Duration类,javadoc表示:

Duration duration = Duration.ofSeconds(3000);
System.out.println(duration.get(ChronoUnit.MINUTES));
java.time.temporal.UnsupportedTemporalTypeException: Unsupported unit: Minutes
    at java.time.Duration.get(Duration.java:537)

那么,从duration对象中提取分钟和小时的推荐方法是什么?我们必须自己从秒数来计算吗?为什么要这样实施?

共有1个答案

呼延哲
2023-03-14

“为什么要这样实施?”

其他答案处理toxxx()方法,这些方法允许查询小时/分钟。我会试着处理为什么。

temporalamount接口和get(TemporalUnit)方法是在过程的后期添加的。我个人并不完全相信我们有足够的证据来证明在这个领域设计的正确方法,但我有点犹豫要添加temporalamount。我相信我们这样做有点混淆了API。

同样,period从低级框架中被看作是一个大小为三个的映射--(幸运的是,这样错误的可能性较小)。

总的来说,应用程序代码的最佳建议是忽略get(TemporalUnit)方法。使用getseconds()getnano()tohours()tominutes()

最后,从持续时间获取“hh:mm:ss”的一种方法是:

LocalTime.MIDNIGHT.plus(duration).format(DateTimeFormatter.ofPattern("HH:mm:ss"))

JDK-8142936问题现在在Java9中实现,添加了以下方法来访问持续时间的每个部分。

  • todayspart
  • tohourspart
  • tominutespart
  • tosecondspart
  • tomillispart
  • tonanospart
 类似资料:
  • 问题内容: 在Java 8和更高版本中可用的新JSR 310 日期API(java.time包)中的类中,javadoc说: 此类以秒和纳秒为单位对时间量或时间量进行建模。 可以使用其他基于持续时间的单位(例如分钟和小时)来访问它 。此外,可以使用DAYS单位并将其视为等于24小时,因此忽略了夏时制的影响。 那么,为什么以下代码会崩溃? 这引发了: 那么从持续时间对象中提取分钟和小时的推荐方法是什

  • 问题内容: 如何在PHP中计算两个日期时间之间的分钟差? 问题答案: 从过去的一减去最近的一并除以60。 时间以Unix格式完成,因此它们只是一个很大的数字,显示从

  • 在ISO 8601中,持续时间的格式为PT5M(5分钟)或PT2H5M(2小时5分钟)。我有一个JSON文件,其中包含这种格式的值。我想知道spark是否可以提取分钟的持续时间。我尝试将其读取为“DateType”,并使用“minutes”函数获取分钟数,结果返回空值。 示例json 目前,我正在将其作为字符串读取并使用“regex_extract”函数。我想知道一种更有效的方法。 https:/

  • 问题内容: 如果我有两个这样的日期时间: 如何以以下格式获取这些日期时间之间的差异: 我用 但是我只有时间。 问题答案: 试试这个- 询问: 输出:

  • 我试图创建一个基于时间的倒计时钟。它不是基于current_dates。将被拉取的初始时间将来自一个单独的php文件。这将是一个基于浏览器的游戏。当有人点击按钮来启动这个脚本。它将检查是否满足某些要求,如果满足,那么这个脚本将启动。根据对象的级别,它将拉动该进行中级别的初始计时器。希望这有意义。无论如何,我基于我提供的第一个代码的计时器脚本。 此脚本仅占分钟和秒。我对它进行了修改,使其也包括了天和

  • 我有一个函数,受hms的启发,但我希望将其扩展到包括处理和显示天数。 我已经开始编辑脚本,但很快意识到我在处理逻辑方面超出了我的深度,几个小时跑到几天,反之亦然...... 以下是我到目前为止所拥有的: 秒:“那花了4天1小时1分1秒才运行。” < code>127932秒:“运行时间为1天11小时32分12秒。” < code>86400秒:“花了1天时间运行。” 秒:“这花了4天97小时1分1