我试图计算两次之间有多少毫秒(例如 13:00 到 13:01 之间有 60000 毫秒)。时间由 2 个整数(小时、分钟)表示。
我写了这个函数:
public static long millisBetweenTimes(int h1, int m1, int h2, int m2) { //hour1, minute1, hour2, minute2
long millis;
millis = (h2 - h1) * (60 * 60000);
if (m < tm)
millis += (m2 - m1) * 60000;
else
millis -= (m1 - m2) * 60000;
return millis;
}
Run Code Online (Sandbox Code Playgroud)
但是,当第二次是后一天时,这将不起作用(例如周日 14:00 到周一 13:00 之间有多少毫秒?)
MC *_*ror 10
正如 Robby在评论中所说java.time,您应该使用包中的类。通过类LocalTime和Duration,您可以获得两个时间点之间的毫秒数。
LocalTime t0 = LocalTime.of(14, 0);
LocalTime t1 = LocalTime.of(13, 0);
Duration d = Duration.between(t0, t1);
if (d.isNegative()) {
d = d.plusDays(1);
}
System.out.println(d.toMillis());
Run Code Online (Sandbox Code Playgroud)
ADuration是一个持续时间:两个时间点之间的时间量。如果第二个时间早于第一个时间,则持续时间为负。在这种情况下,我们需要将持续时间添加 1 天。
现在我们有一定的时间由Duration班级代表。该类包含许多将其转换为特定时间单位的方法。就我们而言,toMillis()这正是我们所需要的。
如果您认为更具表现力,d.isNegative()您也可以使用 来代替。t1.isBefore(t0)
注意:我认为这还没有你自己算算那么笨拙。
| 归档时间: |
|
| 查看次数: |
247 次 |
| 最近记录: |