gpt4 book ai didi

Java Time API - 获取总运行时间的更好方法

转载 作者:行者123 更新时间:2023-11-30 08:21:30 25 4
gpt4 key购买 nike

这是我第一次体验 Java 8 中的"new"java.time 包。

我需要获取总运行时间,例如:
1 天,2h:3m:4s 5ms

我知道间隔有 2 个 TemporalAmount 实现:
- Period 年月日
- Duration 表示小时、分钟、秒、毫秒和纳秒

有没有办法将这两者结合起来,或者比“做数学”更简单的方法?

这是迄今为止我能做的最好的事情:(更新了新的改进版本)

LocalDateTime start = LocalDateTime.now();
// Forcing a long time execution to measure
LocalDateTime end = start
.plusDays(1)
.plusHours(2)
.plusMinutes(3)
.plusSeconds(4)
.plusNanos(5000);

LocalDateTime elapsed = end
.minusDays(start.getDayOfYear())
.minusHours(start.getHour())
.minusMinutes(start.getMinute())
.minusSeconds(start.getSecond())
.minusNanos(start.getNano());

Period period = Period.between(start.toLocalDate(), end.toLocalDate());
long days = period.getDays();

long hours = elapsed.getHour();
long minutes = elapsed.getMinute();
long seconds = elapsed.getSecond();
long milliseconds = elapsed.getNano() / 1000;

StringBuilder msg = new StringBuilder();
msg.append(seconds);
msg.append("s ");
msg.append(milliseconds);
msg.append("ms");
if(minutes > 0) {
msg.insert(0, "m:");
msg.insert(0, minutes);
}
if(hours > 0) {
msg.insert(0, "h:");
msg.insert(0, hours);
}
if(days > 0) {
msg.insert(0, days == 1 ? " day, " : " days, ");
msg.insert(0, days);
}

System.out.println(msg.toString());

感谢您的宝贵时间 =)

最佳答案

您似乎需要 JodaTime 中的 PeriodFormatter。请参阅以下链接:

How to format a duration in java? (e.g format H:MM:SS)

Formatting a Duration in Java 8 / jsr310

考虑到这两个,我建议使用 JodaTime 作为 Duration

关于Java Time API - 获取总运行时间的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25186390/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com