提问者:小点点

使用java 8日期时间在纪元中返回25小时


我想得到25个小时,以毫秒为单位,即90000000(25个小时,以毫秒为单位),有什么方法可以使用Java8日期和时间api动态计算吗?我正在尝试如下:

LocalDate.now().minusHours(25).toEpochDay()

但似乎编译错误:

The method minusHours(int) is undefined for the type LocalDate

共2个答案

匿名用户

下面将25小时转换成毫秒:

Duration.ofHours(25).toMillis()

如果您想在Unix纪元后这么多毫秒,您可以使用Instant.EPOCH.minusInstant.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