在Java8中设置过去/未来日期的最简单方法
我有一个设置未来/过去日期Java8的解决方案,但我想知道是否有更干净的方法。 我有一个方法,其中一个参数的类型为在Java8中设置过去/未来日期的最简单方法,java,java-8,zoneddatetime,Java,Java 8,Zoneddatetime,我有一个设置未来/过去日期Java8的解决方案,但我想知道是否有更干净的方法。 我有一个方法,其中一个参数的类型为ZonedDateTime 我提取时间,转换成毫秒,然后从现在开始减去 void setFuturePastDate(ZonedDateTime dateTime) { long diffInSeconds = ZonedDateTime.now().toEpochSecond() - dateTime.toEpochSecond(); Durati
ZonedDateTime
我提取时间,转换成毫秒,然后从现在开始减去
void setFuturePastDate(ZonedDateTime dateTime) {
long diffInSeconds = ZonedDateTime.now().toEpochSecond()
- dateTime.toEpochSecond();
Duration durationInSeconds = Duration.ofSeconds(diffInSeconds);
Instant instantInSeconds = now.minusSeconds(durationInSeconds);
Clock clock = Clock.fixed(instantInSeconds, ZoneId.systemDefault());
System.out.println(ZonedDateTime.now(clock)); // - I have a past date
在乔达,情况很简单:
setCurrentMillisSystem(long)
无论我们在哪里访问newdatetime()
它都会给出日期集
Java8中有没有更干净的方法
void setFuturePastDate(ZonedDateTime dateTime) {
Clock clock = Clock.fixed(dateTime.toInstant(), ZoneId.systemDefault());
System.out.println(ZonedDateTime.now(clock)); // - I have a past date
}
此方法打印与我传入的相同的
ZoneDateTime
(前提是它具有默认区域)。如果我理解正确,这就是您想要的:
void setFuturePastDate(LocalDateTime dateTime){
final LocalDateTime now = LocalDateTime.now();
final Duration duration = Duration.between(now, dateTime);
final LocalDateTime mirrored;
if(duration.isNegative()){
mirrored = now.minus(duration);
} else {
mirrored = now.plus(duration);
}
System.out.println(mirrored);
}
这反映了
now()
周围的日期时间。例如:过去的5天变成了未来的5天。很抱歉,我会记住的。奥列耶斯接受了答案,最佳方式。。。。。