gpt4 book ai didi

java - 下一个匹配即时

转载 作者:行者123 更新时间:2023-11-30 02:47:04 24 4
gpt4 key购买 nike

我是 java8 时间 API 的新手,所以请原谅这个糟糕的表述。

我想要做的是弄清楚下一次(从时间戳开始)满足某个条件是什么时候,以及什么时候不再满足。

举个例子,假设我有一个毫秒时间戳,我想弄清楚下一个时间戳是什么,也是给定时区的星期五。

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

显然有很多肮脏的方法来做这件事,但我正在寻找一个优雅的 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());

关于java - 下一个匹配即时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39902735/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com