我想得到25个小时,以毫秒为单位,即90000000(25个小时,以毫秒为单位),有什么方法可以使用Java8日期和时间api动态计算吗?我正在尝试如下:
LocalDate.now().minusHours(25).toEpochDay()
但似乎编译错误:
The method minusHours(int) is undefined for the type LocalDate
下面将25小时转换成毫秒:
Duration.ofHours(25).toMillis()
如果您想在Unix纪元后这么多毫秒,您可以使用Instant.EPOCH.minus
从Instant.EPOCH
中减去此持续时间。
演示:
import java.time.Duration;
import java.time.Instant;
public class SecondLargest {
public static void main(String[] args) {
System.out.println(Duration.ofHours(25).toMillis());
System.out.println(Instant.EPOCH.minus(Duration.ofHours(25)));
System.out.println(Instant.EPOCH.minus(Duration.ofHours(25)).toEpochMilli());
}
}
输出:
90000000
1969-12-30T23:00:00Z
-90000000
从跟踪:日期时间中了解有关现代日期时间 API 的更多信息。
首先,你似乎要求在1970年的第一个时刻之后的25个小时的时刻,正如零小时-分钟-秒的偏移所看到的那样。
Duration d = Duration.ofHours( 25 ) ;
Instant instant = Instant.EPOCH.plus( d );
看到这个代码运行在Ideone.com.
instant . tostring()= 1970-01-02t 01:00:00Z
然后你把你的问题改为问如何计算25小时的毫秒数。
Duration d = Duration.ofHours( 25 ) ;
long milliseconds = d.toMillis() ;
结果是九千万。
90000000