Java 下一个匹配瞬间

Java 下一个匹配瞬间,java,java-8,java-time,Java,Java 8,Java Time,我是java8时间API的新手,所以请原谅这个糟糕的公式 我想做的是找出下一次(从时间戳开始)某个标准何时满足,何时停止满足 例如,假设我有一个毫秒的时间戳,我想知道下一个时间戳是什么,也是给定时区的一个星期五 我还需要弄清楚星期五什么时候结束。因为开始时间可能是周五下午4:20(如果时间是这样的话),所以开始时间+单位长度是不够的 Obv有很多肮脏的方法可以做到这一点,但我正在寻找一个优雅的java8风格的解决方案。我面临的实际问题比这要复杂一些,但我认为解决星期五的例子给了我足够的线索,让我

我是java8时间API的新手,所以请原谅这个糟糕的公式

我想做的是找出下一次(从时间戳开始)某个标准何时满足,何时停止满足

例如,假设我有一个毫秒的时间戳,我想知道下一个时间戳是什么,也是给定时区的一个星期五

我还需要弄清楚星期五什么时候结束。因为开始时间可能是周五下午4:20(如果时间是这样的话),所以开始时间+单位长度是不够的


Obv有很多肮脏的方法可以做到这一点,但我正在寻找一个优雅的java8风格的解决方案。我面临的实际问题比这要复杂一些,但我认为解决星期五的例子给了我足够的线索,让我继续前进。

首先,你可能想使用
ZonedDateTime
,因为
Instant
是从纪元开始的毫秒数,并不真正支持“日期”或“时间”等概念“一周中的某一天”

“查找日期匹配条件”并没有真正的实用程序——好吧,你得自己做

final Instant startVal = Instant.now();
final ZonedDateTime date = startVal.atZone(ZoneOffset.UTC); // or whatever
final int daysUntilFriday = (DayOfWeek.FRIDAY.getValue() - date.getDayOfWeek().getValue() + 7) % 7; // +7 to avoid a negative value
final ZonedDateTime startOfNextFriday = date.plusDays(daysUntilFriday).truncatedTo(ChronoUnit.DAYS);
final ZonedDateTime endOfNextFriday = ZonedDateTime.of(startOfNextFriday.toLocalDate(), LocalTime.MAX, startOfNextFriday.getZone());

您可以使用
ZonedDateTime sameTimeOnNextFriday=date.with(TemporalAdjusters.nextOrSame(DayOfWeek.FRIDAY));